Node.js を使用した Express.js のミドルウェアを理解する - パート 9

Patricia Arquette
リリース: 2024-09-21 06:29:49
オリジナル
816 人が閲覧しました

Understanding Middleware in Express.js with Node.js - Part 9

Express.js のミドルウェアを理解する: 簡単な方法

Express.js のミドルウェアというと少し技術的に聞こえるかもしれませんが、コツを掴めば非常に簡単です。これはレースのピットストップのようなものです。リクエストが受信され、フィニッシュ ライン (ルート ハンドラー) に到達する前に、変更、チェック、または単に記録するためにさまざまなポイントでいくつか停止します。

この記事では、ミドルウェアとは何か、その使用方法を詳しく説明し、実際の例をいくつか示します。できるだけシンプルで実用的なものにしましょう!


では、ミドルウェアとは一体何なのでしょうか?

サーバーへのすべてのリクエストが、旅行中の車であると想像してください。ミドルウェアは、各自動車が目的地に到着する前に通過しなければならない一連のチェックポイントのようなものです。各チェックポイント (ミドルウェア) では、何かが起こります。車が洗われるかもしれない、軽食を拾うかもしれない、あるいは方向転換して家に帰るように言われるかもしれません!

コーディング用語で言えば、ミドルウェアはリクエストとレスポンスの間に位置する機能にすぎません。次のことが可能です:

  • コードを実行します。
  • リクエストまたはレスポンスを変更します。
  • これ以上のリクエストを停止します。
  • 次のミドルウェアに渡します。

これは超基本的な例です:

app.use((req, res, next) => {
  console.log('A request came in!');
  next(); // Pass the baton to the next middleware
});
ログイン後にコピー

リクエストがサーバーに到達するたびに、サーバーはメッセージをログに記録し、制御を次のミドルウェアまたはルート ハンドラーに渡します。


組み込みミドルウェア: Express のすぐに使えるツール

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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート