質問: multer({dest: "./tmp"}); router.post("/upload",upload.single("photo"),function(req,res,next){ }) ``` 質問ですが、router.post関数は、第一引数をルーティング文字、第二引数はコールバック関数を指定するものだと思っていました。 上記ソースのようにコールバック関数の前に引数を指定すると、どんな事が出来るのでしょうか?教えて下さい。よろしくお願いいたします。
回答: 作った本人に聞いて下さい。 ......という訳で公式サイトのドキュメントを見てみます。 APIリファレンス app.post - Express 4.x > > app.post(path, callback [, callback ...]) > > > どうやら間に挟んだ関数はミドルウェアのようです。 通常`app.use(fn)`とミドルウェアを利用すると、 全てのアクセスに対して同じミドルウェアを適用します。 普通はそれで十分なのですが、 特定の重い処理はこのように特定のURLへの特定操作のみ行う...という風な指定の仕方が出来るようです。 POSTでありがちなのはバリデート機能でしょうか? `req`の入力値を取り出して検証し、OKなら`next`を実行、NGなら400番を返すような作りにしておけば メインのやりたい事を記述している箇所は正常系のみ通せば良くなります。 URL毎にチェックすべきパラメータは違うと思いますので、関数を分離したい開発者にとってはかなり便利かもしれません。