Я хотел бы написать HTTP-сервер, который отвечал бы на запрос, используя нестандартный HTTP-метод (глагол). Например, клиент сделает запрос типа FOO / HTTP / .1.1
. А на стороне сервера этот запрос будет обрабатываться примерно так:
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);
Я добавил свой нестандартный метод к массиву, экспортированному в ExpressJS lib / router / methods.js
.Это позволило мне написать свой серверный код, как ожидалось. При использовании express.methodOverride ()
и запроса POST
с _method = foo
он работает. Но фактический запрос FOO
не работает. Как только клиент отправляет первую строку запроса, соединение закрывается сервером:
$telnet localhost 3000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
FOO / HTTP/1.1
Connection closed by foreign host.
Я хотел бы иметь возможность реализовать это с помощью ExpressJS, не избегая взлома его основного файла.
Есть идеи, возможно ли это и как?