advanced

Middleware

Запускайте edge-логику для redirects, rewrites, проверок auth, заголовков и лёгких routing-решений.

Middleware выполняется на Edge до route handler или page. Подходит для redirects, rewrites, лёгких auth gates, locale negotiation и заголовков — не для тяжёлых запросов к БД или долгого CPU.

					// middleware.ts
export function middleware(request: NextRequest) {
  if (!request.cookies.get('session')) {
    return NextResponse.redirect(new URL('/login', request.url));
  }
}
export const config = { matcher: ['/dashboard/:path*'] };
				

Matcher ограничивает пути, платящие за middleware. Edge runtime отличается от Node route handlers.

На интервью: middleware против route handlers и auth checks на уровне layout.

Типовые ошибки: полная валидация сессии с удалённой БД на каждый asset, широкий matcher, middleware как BFF.

Компромисс: ранний контроль запроса против ограничений runtime и cold start на edge.

Чеклист:

  • Быстрый middleware и узкий matcher.
  • Redirect/rewrite до дорогой работы.
  • Тяжёлую логику — в handlers или server actions.
  • Явно тестируйте cookies и headers.