登録フォームを作成しています(認証としてパスポートローカル、フォームヘルパーとしてフォーム)。
登録はGETとPOSTのみを知っているため、1つの関数ですべての処理を行いたいと思います。
他の言葉で私は次のようなものを探しています:
exports.register = function(req, res){
if (req.isPost) {
// do form handling
}
res.render('user/registration.html.swig', { form: form.toHTML() });
};
答えはとても簡単でした
exports.register = function(req, res) {
if (req.method == "POST") {
// do form handling
}
res.render('user/registration.html.swig', { form: form.toHTML() });
};
しかし、私はエクスプレスガイドでこのアプローチを長い間探しました。
最後に、ノードのドキュメントには次のような詳細な情報があります。 http://nodejs.org/api/http.html#http_http_request_options_callback
Npm => "method-override"でパッケージを使用できるようになりました。これにより、 "req.method"プロパティをオーバーライドするミドルウェアレイヤーが提供されます。
基本的に、クライアントは/registration/passportID?_method=PUT
のような修正された「req.method」でPOSTリクエストを送信できます。
の
?_method = XXXXX
部分は、ミドルウェアがこれが潜伏PUT要求であることを識別するためのものです。
フローは、クライアントがPOST reqをサーバー側に送信し、ミドルウェアがreqを変換して、対応する「app.put ...」ルートを実行することです。
これは妥協の方法だと思います。詳細: method-override