【发布时间】:2012-03-08 07:07:57
【问题描述】:
我想编写一个使用非标准 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() 和带有_method=foo 的POST 请求时,它可以工作。但是实际的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 实现这一点,并且避免侵入其核心文件。
知道这是否可行以及如何实现?
【问题讨论】: