非標準のHTTPメソッド(動詞)を使用してリクエストに応答するHTTPサーバーを作成したいと思います。たとえば、クライアントはFOO/HTTP/.1.1
のような要求を行います。そして、サーバ側で、この要求のようなものによって処理される: ExpressJSを使用した非標準HTTPメソッドの処理
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
リクエストは機能しません。私はExpressJSとし、そのコアファイルをハッキング回避せずにこれを実装できるようにしたいと思い
$telnet localhost 3000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
FOO/HTTP/1.1
Connection closed by foreign host.
:とすぐにクライアントとして接続がサーバーによって閉じられたリクエストの最初の行を送信します。
これが可能かどうか、考えてください。
現在のノード(4.6)とexpress(4)のバージョンでは、カスタムHTTP動詞を扱うことができます。 'app.all'を聞いて、コールバックで' req.method'をチェックすると動作します。 – MatsLindh