Express.js では、ミドルウェアはリクエスト (req)、レスポンス (res)、および next と呼ばれる 3 番目のパラメーターにアクセスできる特別な関数です。通常のルート ハンドラーとは異なり、ミドルウェアは、メインのビジネス ロジックの前に外部ロジックを実行することで、アプリケーションのフローを制御する上で重要な役割を果たします。
HTTP リクエストが Express.js サーバーに到達すると、一連のミドルウェア関数を通過します。各ミドルウェアは次のことができます:
ミドルウェアが next() を呼び出さない場合、要求と応答のサイクルはそこで終了し、それ以降のロジック (ルート ハンドラーを含む) は実行されません。
ミドルウェアは、リクエストを処理する前に再利用可能なロジックを追加する必要があるシナリオに最適です。例:
ミドルウェア関数は次のようになります:
app.use((req, res, next) => { // Logic here next(); // Pass control to the next middleware or route handler });
ミドルウェアの順序は重要です! Express は、定義された順序でミドルウェアを順次実行します。
ミドルウェアがルートの後に定義されている場合、そのルートには影響しません。このため、app.js でルートの前にミドルウェアを宣言する必要があります。
例:
// Middleware to check if the user has admin privileges app.use((req, res, next) => { console.log("Checking for admin role..."); // Simulating a user object attached earlier in the pipeline if (req.user && req.user.role === "admin") { console.log("Access granted"); next(); // Move to the next middleware or route handler } else { console.log("Access denied"); res.status(403).send("You do not have access to this resource."); } }); // Routes app.get("/admin/dashboard", (req, res) => { res.send("Welcome to the admin dashboard!"); }); app.get("/public", (req, res) => { res.send("This is a public page."); });
段階的に何が起こるかは次のとおりです:
以上がExpress.js のミドルウェアとその内部動作についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。