Vorrei scrivere un server HTTP che risponda alla richiesta utilizzando un metodo HTTP non standard (verbo). Ad esempio, il cliente potrebbe effettuare una richiesta come FOO/HTTP/.1.1
. E sul lato server, questa richiesta sarebbe stato gestito da qualcosa come: Servizio di metodo HTTP non standard con ExpressJS
var express = require('express');
var app = express.createServer();
app.configure(function(){
app.use(express.logger({ format: ':method :url' }));
app.use(express.methodOverride());
});
app.foo('/', function(req, res){
res.send('Hello World');
});
app.listen(3000);
ho accodato il mio metodo non-standard per la matrice esportato in ExpressJS di lib/router/methods.js
. Questo mi permette di scrivere il mio codice server come previsto. Quando si utilizza express.methodOverride()
e una richiesta POST
con _method=foo
, funziona. Ma una richiesta effettiva FOO
non funziona. Non appena il client invia la prima linea della richiesta la connessione viene chiusa dal server:
$telnet localhost 3000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
FOO/HTTP/1.1
Connection closed by foreign host.
Mi piacerebbe essere in grado di implementare questo con ExpressJS e senza evitare di hacking in suo file core.
Qualche idea se è possibile e come?
Solo per pubblicare un aggiornamento - nelle versioni corrente di nodo (4.6) ed espresso (4), è possibile gestire verbi HTTP personalizzati. Ascoltando 'app.all' e quindi controllando' req.method' nel callback funziona. – MatsLindh