app.use
で関数をセットすると、リクエストを受けた時にそれらの関数を順々に実行します。この関数をミドルウェアと呼びます。
ミドルウェアはリクエスト(req)、レスポンス(res)と次のミドルウェアの呼び出し関数(next)を受け取る関数です。ミドルウェアで処理を行なったら次のミドルウェアを呼び出すためにnextを呼び出します。
ミドルウェアを使うことで例えばロギングや認証などのアプリケーション全体で必要になるような処理を一箇所で定義できます。
次のコードはミドルウェア関数を使ったサンプルです。リクエストを受けると「1」と出力するミドルウェアと「2」と出力するミドルウェアを並べました。
const express = require('express');
const app = express();
app.use((req, res, next) => {
console.log('1');
next();
});
app.use((req, res, next) => {
console.log('2');
next();
});
app.get('/', (req, res) => {
res.send('Hello');
});
app.listen('3000', () => {
console.log('Application started');
});
サーバーを起動し、 http://localhost:3000
にアクセスするとログには1, 2と出力されます
$ node app.js
Application started
1
2