Next.jsでAPIを構築する方法(要約)
Key Points
- App Router推奨
- Route Handlersで複数メソッド
- SPA出力はAPI制約あり
Summary
Next.jsのApp RouterとRoute Handlersを使ったAPI構築の実践的ガイドです。プロジェクトセットアップ、app/.../route.ts で複数HTTPメソッドをエクスポートするパターン、標準Web Request/Responseの扱い、クエリ・ヘッダ・クッキー処理、動的ルート、プロキシ(BFF)用途、共有ミドルウェアの作り方、デプロイとSPA出力時の制約までをカバーします。エンジニアがすぐ実装できる点に絞ってまとめています。
Key Points
- 初期化:
npx create-next-app@latest --apiでAPIの雛形を作成。 - ファイル配置:
app/api/<route>/route.tsにexport async function GET/POST/...を実装して同一エンドポイントで複数メソッドを扱う。 - Web標準API: ハンドラは標準の
Requestを受け取りResponseを返す。必要に応じてNextRequest/NextResponseやnext/headers、cookies()を利用。 - 動的ルート:
app/api/users/[id]/route.tsでparams.idを取得してGET/DELETEなどの処理を実装。 - プロキシ/BFF: 外部APIへのフォワード、認証付与、レスポンス変換でクライアントを簡素化。
- 共有ミドルウェア: 認証やログを共通関数(例:
withAuth)でラップして再利用。 - デプロイ/SPA注意点:
next startやVercelでRoute Handlersは有効。output: 'export'の静的(SPA)出力ではサーバー処理は動作しないため、APIを別ホストする必要がある。 - いつ作らないか: データがアプリ内部のみで完結するならServer Componentsで直接fetchし、公開APIは不要。
Quick Steps
npx create-next-app@latest --apiapp/api/<route>/route.tsを作りGET/POSTをエクスポート- リクエストは
Request/NextRequestで読み取り、Responseを返す - 認証やログは共通ラッパーで共有
- SPA出力を使う場合は外部にAPIを用意