Tôi muốn viết một máy chủ HTTP trả lời để yêu cầu sử dụng phương thức HTTP không chuẩn (động từ). Ví dụ, khách hàng sẽ thực hiện một yêu cầu như FOO/HTTP/.1.1
. Và ở phía máy chủ, yêu cầu này sẽ được xử lý bởi một cái gì đó như: Cung cấp phương thức HTTP không chuẩn với 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);
tôi nối phương pháp phi tiêu chuẩn của tôi đến các mảng xuất khẩu trong ExpressJS của lib/router/methods.js
. Điều này cho phép tôi viết mã máy chủ của tôi như mong đợi. Khi sử dụng express.methodOverride()
và yêu cầu POST
với _method=foo
, nó hoạt động. Nhưng yêu cầu thực tế FOO
không hoạt động. Ngay sau khi khách hàng gửi dòng đầu tiên của các yêu cầu kết nối được đóng bởi máy chủ:
$telnet localhost 3000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
FOO/HTTP/1.1
Connection closed by foreign host.
Tôi muốn để có thể thực hiện điều này với ExpressJS và không tránh xâm nhập vào tập tin cốt lõi của nó.
Bất kỳ ý tưởng nào nếu điều này là có thể và làm cách nào?
Chỉ để đăng cập nhật - trong phiên bản hiện tại (4.6) và các phiên bản (4), bạn có thể xử lý các động từ HTTP tùy chỉnh. Nghe 'app.all' và sau đó kiểm tra' req.method' trong công việc gọi lại. – MatsLindh