ExpressのMiddleware
routingの過程で何らかの処理を差し込む
app.use(fn)とか、router.get('/', fn)のfnの部分のことをmiddlewareと呼んでいる
前提として、Expressは全体的なノリとして手続き的な感じがあるmrsekut.icon app.hoge()のような関数を羅列し、上から実行していく
routingに関するものはmatchしたものがあれば、一番最初にmatchしたものが実行される
matchするものが複数ある場合などに、2番目以降のものも実行したい時はnext()を呼ぶ
middlewareを分類すると5種類ある
Application-level
最も一般的なもの
app.hoge()に対するもの
3つの引数
Router-level
Application-levelとほぼ同じ
3つの引数
Error-handling
4つの引数
third-party
外部ライブラリを使ったやつ
e.g. cors()
Built-in
v4以降は存在しない
code:ts
app.use(function (err, req, res, next) {
console.error(err.stack)
res.status(500).send('Something broke!')
})