リクエストが処理される前に実行される関数。認証チェック・リダイレクト・ヘッダー追加などに使う。
// middleware.ts (プロジェクトルートに配置)
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
export function middleware(request: NextRequest) {
const { pathname } = request.nextUrl;
// 認証チェック
const token = request.cookies.get('token')?.value;
if (pathname.startsWith('/dashboard') && !token) {
return NextResponse.redirect(new URL('/login', request.url));
}
// ヘッダー追加
const response = NextResponse.next();
response.headers.set('x-custom-header', 'my-value');
return response;
}
// どのパスにミドルウェアを適用するか
export const config = {
matcher: ['/dashboard/:path*', '/api/:path*'],
};Middlewareはエッジランタイムで実行されるため、Node.js APIの一部は使えない。重い処理はRoute Handlerに委ねる。