アプリケーションミドルウェア
アプリケーションミドルウェアは主にURLのインターセプトに使用されます。ミドルウェアはnextオブジェクトを通じてリクエストを次の処理に渡す必要があります。
補足:すべてのミドルウェアはuseメソッドを使用し、ルータもミドルウェアの一種です。
// アプリケーションミドルウェアの実装例
const express = require("express");
const server = express();
const port = 3000;
server.listen(port, () => {
console.log(`サーバーがポート${port}で起動しました`);
});
// 特定のパスに対するインターセプト
server.use("/register", (request, response, next) => {
console.log("アプリケーションミドルウェアが実行されました");
// 次の処理に進むためにnext()を呼び出す
next();
});
server.get("/register", (request, response) => {
response.send("登録が成功しました!");
});
server.get("/signin", (request, response) => {
response.send("registerミドルウェアがこのルートに影響を与えていないことを確認");
});
結果分析:
- URLが http://localhost:3000/register の場合:アプリケーションミドルウェアの出力が表示されます
- URLが http://localhost:3000/signin の場合:アプリケーションミドルウェアの出力は表示されません
組み込みミドルウェア
概要:ルータが静的リソースを要求する場合、自動的に静的リソースフォルダから検索し、個別のルートを作成してファイルに応答する必要はありません。
用途:ユーザーが頻繁にアクセスする静的リソース(HTML、CSS、JS、画像など)がある場合、サーバーに大量のルートが存在する可能性があります。組み込みミドルウェアを使用することで、この問題を解決できます。
// 組み込みミドルウェアの使用例
const express = require("express");
const webServer = express();
const listenPort = 3000;
webServer.listen(listenPort, () => {
console.log(`静的ファイルサーバーがポート${listenPort}で起動しました`);
});
// 静的リソースの設定 - 追加のルートを作成する必要はありません
webServer.use(express.static("public"));
組み込みミドルウェアの使用上の注意点:
ユーザーがルートディレクトリに直接アクセスした場合、デフォルトで静的リソースフォルダ内のindex.htmlが検索されます。
動作例:
- http://localhost:3000/image.png にアクセスすると、publicフォルダ内のimage.pngが返されます
- http://localhost:3000/login.html にアクセスすると、publicフォルダ内のlogin.htmlが返されます
- http://localhost:3000 にアクセスすると、publicフォルダ内のindex.htmlが返されます
- CSS、JS、その他のフォルダも同様にサポートされます