Middleware in Express.js: 中間リクエストの処理

の Middleware 紹介 Express.js

Middleware in は Express.js 、要求と応答のライフサイクル中に特定の順序で関数を実行できるようにする強力な概念です。 これらの関数は、認証、ロギング、データ検証などのさまざまなタスクを実行できます。 Middleware 関数は順番に実行され、それぞれが および オブジェクトに加えて、 スタック内の 次の関数に制御を渡す関数 middleware にアクセスできます。 request response next middleware

なぜ使用するのか Middleware ?

Middleware は、アプリケーションの機能をモジュール化し、保守性を高めるために不可欠です。 これにより、ルート ハンドラーをクリーンな状態に保ち、特定のタスクに集中できると同時に、一般的な問題や横断的な問題を関数にオフロードできます middleware。 この関心事の分離により、コードの再利用性が促進され、コードベースがより整理されたものになります。

作成と使用 Middleware

middleware で 作成するには、 、 、 の Express.js 3 つのパラメータを取る関数を定義します 。 request response next

middleware 各受信リクエストをログに記録する 基本的な例を次に示します。

const logMiddleware =(req, res, next) => {  
  console.log(`Received a ${req.method} request at ${req.url}`);  
  next(); // Pass control to the next middleware  
};  
  
app.use(logMiddleware);  

このメソッドを使用してすべてのルートにグローバルに app.use() 適用すること middleware も、特定のルートに対して選択的に使用することもできます。

Middleware 実行 順序

Middleware 関数は、 を使用して定義された順序で実行されます app.use()

例えば:

app.use(middleware1);  
app.use(middleware2);  

この場合、 すべての受信リクエストの middleware1 前に実行されます。 middleware2

エラーの処理 Middleware

関数内でエラーが発生した場合は middleware 、エラーを関数に渡すことができ next、 Express.js 自動的に error-handling にスキップします middleware。

以下に例を示します。

const errorMiddleware =(err, req, res, next) => {  
  console.error(err);  
  res.status(500).send('Something went wrong!');  
};  
  
app.use(errorMiddleware);  

Middleware 認証に 使用する

Middleware Web アプリケーションで認証と認可を実装するためによく使用されます。 たとえば、 middleware 特定のルートへのアクセスを許可する前に、ユーザーが認証されているかどうかを確認する関数を作成できます。

const authenticateMiddleware =(req, res, next) => {  
  if(req.isAuthenticated()) {  
    return next(); // User is authenticated, proceed to the next middleware  
  }  
  res.redirect('/login'); // User is not authenticated, redirect to login page  
};  
  
app.get('/profile', authenticateMiddleware,(req, res) => {  
  res.send('Welcome to your profile!');  
});  

 

結論

Middleware in は Express.js 、Web アプリケーションの機能を管理および強化するための重要なツールです。 再利用可能な関数を作成すると middleware 、コードを合理化し、問題をモジュール化し、プロジェクトの全体的な保守性を向上させることができます。 認証の処理からロギングおよびエラー管理まで、 middleware 堅牢で安全な Web アプリケーションを効率的に構築できるようにします。