Express.js のミドルウェアというと少し技術的に聞こえるかもしれませんが、コツを掴めば非常に簡単です。これはレースのピットストップのようなものです。リクエストが受信され、フィニッシュ ライン (ルート ハンドラー) に到達する前に、変更、チェック、または単に記録するためにさまざまなポイントでいくつか停止します。
この記事では、ミドルウェアとは何か、その使用方法を詳しく説明し、実際の例をいくつか示します。できるだけシンプルで実用的なものにしましょう!
サーバーへのすべてのリクエストが、旅行中の車であると想像してください。ミドルウェアは、各自動車が目的地に到着する前に通過しなければならない一連のチェックポイントのようなものです。各チェックポイント (ミドルウェア) では、何かが起こります。車が洗われるかもしれない、軽食を拾うかもしれない、あるいは方向転換して家に帰るように言われるかもしれません!
コーディング用語で言えば、ミドルウェアはリクエストとレスポンスの間に位置する機能にすぎません。次のことが可能です:
これは超基本的な例です:
app.use((req, res, next) => { console.log('A request came in!'); next(); // Pass the baton to the next middleware });
リクエストがサーバーに到達するたびに、サーバーはメッセージをログに記録し、制御を次のミドルウェアまたはルート ハンドラーに渡します。
Express には、作業を容易にするいくつかの組み込みミドルウェア機能が付属しています。ここでは、おそらく常に使用するものをいくつか紹介します:
1- express.json(): これは、受信する JSON データを処理するのに役立ちます。
app.use(express.json());
2- express.static(): 画像や CSS などの静的ファイルを提供したいですか?このミドルウェアがすべてをカバーします。
app.use(express.static('public'));
3- express.urlencoded(): HTML フォームを通じて送信されたデータの解析に役立ちます。
app.use(express.urlencoded({ extended: true }));
ログ記録やユーザーがログインしているかどうかの確認などの特定のタスクを処理する独自のミドルウェアを作成することもできます。
例: 単純なロガー
app.use((req, res, next) => { console.log(`Request Method: ${req.method}, URL: ${req.url}`); next(); });
これにより、リクエストがサーバーに到達するたびに、HTTP メソッドと URL が記録されます。アプリで何が起こっているかを追跡するのに最適です。
例: 認証チェック
const checkAuth = (req, res, next) => { if (!req.headers.authorization) { return res.status(403).send('You shall not pass! (Unauthorized)'); } next(); // Allow the request to continue if authorized }; app.use(checkAuth);
ここでは、リクエストに認証ヘッダーがない場合、「403 Forbidden」メッセージでブロックされます。それ以外の場合は、そのまま転送されます。
すべてを自分で書きたくないですか?朗報: Express は、タスクを処理できる多数のサードパーティ ミドルウェアと連携します。
例: ロギング用のモルガン
morgan は、リクエストをログに記録するための人気のあるミドルウェアです。使用するには:
1- インストールします:
npm install morgan
2- アプリに追加します:
const morgan = require('morgan'); app.use(morgan('dev'));
これで、リクエストが受信されるたびに、ターミナルに適切なフォーマットされたログが取得されます。
例: クロスオリジンリクエストの cors
cors ミドルウェアを使用すると、アプリが他のドメインからのリクエストを処理できるようになります (API を構築するときに非常に便利です)。
1- インストールします:
npm install cors
2- 使用します:
const cors = require('cors'); app.use(cors());
それだけです!これで、アプリは苦労することなくクロスオリジンリクエストを処理できるようになりました。
アプリ内のすべてのルートに必ずしもミドルウェアを適用する必要はありません。場合によっては、特定のものに対してのみ実行したい場合があります。
app.get('/dashboard', checkAuth, (req, res) => { res.send('Welcome to the Dashboard'); });
ここでは、checkAuth ミドルウェアは、誰かが /dashboard ルートにアクセスしようとしたときにのみ実行されます。許可されていない場合は立ち入りできません!
時には物事がうまくいかないことがあります。そこでエラー処理ミドルウェアが役に立ちます。見た目は少し異なります。err、req、res、next の 4 つの引数を取ります。
app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send('Something went wrong!'); });
このミドルウェアはエラーを捕捉し、わかりやすい「500 Internal Server Error」メッセージを送り返します。
ミドルウェアは、Express.js のスイス アーミー ナイフのようなものです。リクエストの管理、エラーの処理、ログや認証などの優れた機能の追加に役立ちます。組み込みオプションを使用する場合でも、独自に作成する場合でも、サードパーティ ツールを利用する場合でも、ミドルウェアはアプリをモジュール化して管理しやすく保ちます。
読んでいただきありがとうございます。コーディングを楽しんでください! ?
以上がNode.js を使用した Express.js のミドルウェアを理解する - パート 9の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。