Обслуживание нестандартного метода HTTP с помощью ExpressJS

Я хотел бы написать 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, не избегая взлома его основного файла.

Есть идеи, возможно ли это и как?

7
задан Pierre Buyle 16 February 2012 в 20:51
поделиться