スタック内の次のmiddleware
を呼び出します。
ミドルウェア関数は、アプリケーションの要求応答サイクルで要求オブジェクト(req)、応答オブジェクト(res)、および次のミドルウェア関数にアクセスできる関数です。次のミドルウェア機能は、一般に次の名前の変数で表されます。ミリオウェア機能では、次のタスクを実行できます。
- 任意のコードを実行します。
- 要求オブジェクトと応答オブジェクトを変更します。
- 要求 - 応答サイクルを終了します。
- スタック内の次のミドルウェアを呼び出します。現在のミドルウェア機能は、要求 - 応答 サイクルを終了しない場合
、それは()の次のミドルウェア 関数に制御を渡す次のコールしなければなりません。それ以外の場合、リクエストはハングアップのままになります。 例単純なhello world
の例を使用して表現し、後でミドルウェア機能を定義します。
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(3000);
ミドルウェア機能
var myLogger = function (req, res, next) {
console.log('LOGGED');
next();
}
お知らせnext()
に上記の呼び出し。この関数を呼び出すと、アプリケーション内の次のミドルウェア関数が呼び出されます。 next()
関数はNode.js
またはExpress API
の一部ではありませんが、ミドルウェア関数に渡される3番目の引数です。 next()
関数の名前は何でもかまいませんが、慣例では常に“next”
と命名されています。混乱を避けるために、常にこの規則を使用してください。
ミドルウェア機能をロードするには、ミドルウェア機能を指定してapp.use()を呼び出します。たとえば、次のコードは、ルートパス(/)へのルートの前にmyLoggerミドルウェア関数をロードします。
var express = require('express');
var app = express();
var myLogger = function (req, res, next) {
console.log('LOGGED');
next();
}
app.use(myLogger);
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(3000);
アプリがリクエストを受信するたびに、端末は「LOGGED」というメッセージを端末に出力します。
ミドルウェアのロード順序は重要です。最初にロードされるミドルウェア機能も最初に実行されます。
ルートパスのルートの後にロードされた場合、ルートパスのルートハンドラがリクエスト - 応答サイクルを終了するため、要求はそれに到達せず、アプリケーションは "LOGGED"を出力しません。
ミドルウェア機能myLoggerは単にメッセージを出力し、次にnext()
関数を呼び出すことによって、要求をスタック内の次のミドルウェア機能に渡します。
Source Expressjs guide article