ミドルウェア
リクエストとレスポンスの間に挟まる処理層で、認証 / ログ / エラーハンドリングを横断的に適用する
ミドルウェアとは
ミドルウェアは、リクエストとレスポンスの間に挟まる処理層で、認証、ログ、エラーハンドリング、CORS などの横断的関心事を一元的に適用する。Express、Koa、Hono などの Web フレームワークに共通する基本概念である。
ミドルウェアの流れ
リクエストはハンドラに到達する前に、認証、ログ、CORS などのミドルウェアを順番に通過する。各ミドルウェアはリクエストの検査・加工を行い、next() で次のミドルウェアに処理を渡す。
戻りの挙動はフレームワークによって異なる点に注意したい。Koa は await next() で下流を呼び出し、制御が上流へ戻ってから残りの処理を実行するため、下流の結果を見てレスポンスを加工できる。一方 Express の next() は後続のミドルウェアを呼び出すだけなので、ハンドラが res.json() で応答を送り終えた後に本文を書き換えることはできない。Express で応答を加工したい場合は res.write と res.end を差し替えるか、圧縮ミドルウェアのようにその仕組みを内包したライブラリを使う。
リクエスト → [認証] → [ログ] → [CORS] → ハンドラ → [エラー処理] → レスポンス
↑ ↑
ミドルウェア ミドルウェア
Express の例
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 のミドルウェア的機能を以下にまとめる。
| 機能 | REST API | HTTP API |
|---|---|---|
| 認証 | Cognito オーソライザー、Lambda オーソライザー | JWT オーソライザー (Cognito などを発行元に指定)、Lambda オーソライザー |
| CORS | OPTIONS メソッドを自分で用意 | CorsConfiguration |
| スロットリング | 使用量プラン (API キー単位)、ステージとメソッド単位 | ステージ単位、ルート単位 |
| リクエスト検証 | Request Validator | 非対応 (Lambda 側で実装) |
| WAF | 統合あり | 非対応 |
表は 2026 年 8 月時点。API Gateway が横断的関心事を引き受ける分だけ Lambda のコードは薄くなるが、使用量プラン、Request Validator、WAF 統合はいずれも REST API 向けの機能である。安価さで HTTP API を選んだ後にこれらを前提とした設計が崩れる、という手戻りが起きやすい。
ミドルウェアの順序
ミドルウェアの順序を図で示す。
重要: ミドルウェアの実行順序は定義順
1. CORS (最初に実行、OPTIONS を早期返却)
2. ログ (全リクエストを記録)
3. 認証 (未認証は早期返却)
4. バリデーション
5. ハンドラ
6. エラーハンドリング (最後に実行)
実務での活用方法は関連書籍にも詳しい。
この記事は役に立ちましたか?
関連用語
関連する記事
Web 開発本ガイド - フロントエンドからバックエンドまで
Web 開発の全体像を学べる技術書の選び方と学習マップを紹介。フレームワーク本の賞味期限問題と公式ドキュメントとの使い分けも解説します。
Git / GitHub 本ガイド - マンガ / GUI / 仕組み理解の 3 つの入口で選ぶ
Git と GitHub を学ぶ本の選び方を「入口の違い」で整理。マンガで概念を掴む本、GUI から入る本、仕組みを腹落ちさせる本、チーム開発の作法を学ぶ本、手元に置くリファレンスまで、2026 年 8 月時点の定番書で独学ルートを解説します。
エラーメッセージを読めるエンジニアは何が違うのか
エラーが出たときに冷静に原因を特定できる人と、パニックになる人。その差は経験だけでなく、読んできた本の種類にあります。デバッグ力を支える読書の傾向を分析します。