generated at
ExpressのMiddleware
routingの過程で何らかの処理を差し込む
app.use(fn) とか、 router.get('/', fn) fn の部分のことをmiddlewareと呼んでいる




前提として、Expressは全体的なノリとして手続き的な感じがあるmrsekut
app.hoge() のような関数を羅列し、上から実行していく
routingに関するものはmatchしたものがあれば、一番最初にmatchしたものが実行される
matchするものが複数ある場合などに、2番目以降のものも実行したい時は next() を呼ぶ


middlewareを分類すると5種類ある
Application-level
最も一般的なもの
app.hoge() に対するもの
3つの引数
Router-level
Application-levelとほぼ同じ
exress.Router()を使った router.hoge() に対するもの
3つの引数
Error-handling
4つの引数
third-party
外部ライブラリを使ったやつ
e.g. cors()
Built-in
v4以降は存在しない




Error-handlingのmiddlewareは4つの引数を取る
ts
app.use(function (err, req, res, next) { console.error(err.stack) res.status(500).send('Something broke!') })