ミドルウェア

リクエストとレスポンスの間に挟まる処理層で、認証・ログ・エラーハンドリングを横断的に適用する

設計Web

ミドルウェアとは

ミドルウェアは、リクエストとレスポンスの間に挟まる処理層で、認証、ログ、エラーハンドリング、CORS などの横断的関心事を一元的に適用する。Express、Koa、Hono などの Web フレームワークの基本概念。

ミドルウェアの流れ

リクエスト → [認証][ログ][CORS] → ハンドラ → [エラー処理] → レスポンス
              ↑                              ↑
          ミドルウェア                    ミドルウェア

Express の例

import express from 'express';
const app = express();

// ログミドルウェア
app.use((req, res, next) => {
  console.log(`${req.method} ${req.path}`);
  next(); // 次のミドルウェアへ
});

// 認証ミドルウェア
app.use('/api', (req, res, next) => {
  const token = req.headers.authorization;
  if (!token) return res.status(401).json({ error: 'Unauthorized' });
  next();
});

app.get('/api/users', (req, res) => res.json({ users: [] }));

ミドルウェアのパターン

典型的なミドルウェアには、トークンの検証や権限チェックを行う認証・認可、リクエスト/レスポンスの記録を行うログ、例外をキャッチして統一レスポンスを返すエラーハンドリング、クロスオリジンヘッダーを付与する CORS、リクエストボディを検証するバリデーション、リクエスト数を制限するレート制限がある。

API Gateway のミドルウェア的機能

機能 API Gateway の対応
認証 Cognito Authorizer, Lambda Authorizer
CORS CorsConfiguration
スロットリング Usage Plan
リクエスト検証 Request Validator
WAF AWS WAF 統合

API Gateway がミドルウェアの役割を担うため、Lambda のコードをシンプルに保てる。

ミドルウェアの順序

重要: ミドルウェアの実行順序は定義順

1. CORS (最初に実行、OPTIONS を早期返却)
2. ログ (全リクエストを記録)
3. 認証 (未認証は早期返却)
4. バリデーション
5. ハンドラ
6. エラーハンドリング (最後に実行)

実務での活用方法は関連書籍にも詳しい。

関連用語