Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Next.js
Next.jsmedium

Do czego służy Next.js Middleware (i jakie ma ograniczenia)?

Tagi
#middleware#edge#redirect
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

Middleware działa przed obsługą route (często na edge) i może robić redirect/rewrite (np. locale routing, bramki auth). Powinno być lekkie i ma ograniczenia runtime względem pełnego Node.js (nie wszystkie API są dostępne).

Odpowiedź zaawansowana

Głębiej

Next.js Middleware uruchamia się *przed* logiką route/page i często działa na edge. Jest dobre do rzeczy, które muszą wykonać się wcześnie na poziomie requesta:

  • redirect/rewrites (locale routing, migracje starych URL),
  • bramki auth (przekierowanie niezalogowanych),
  • dodawanie/normalizacja headerów,
  • lekkie A/B testy lub routing per region.

Przykład

// middleware.ts
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'

export function middleware(req: NextRequest) {
  const loggedIn = Boolean(req.cookies.get('session'))
  if (!loggedIn && req.nextUrl.pathname.startsWith('/admin')) {
    const url = req.nextUrl.clone()
    url.pathname = '/login'
    return NextResponse.redirect(url)
  }
  return NextResponse.next()
}

Ograniczenia

  • Często Edge runtime: ograniczone API Node.js (brak `fs`, moduły natywne zwykle nie działają).
  • Musi być szybkie: może odpalać się dla wielu requestów.
  • To nie jest zamiennik backendu; unikaj ciężkich wywołań DB i długich obliczeń.

Typowe pułapki

  • Middleware na wszystkie ścieżki (w tym statyczne assety) zamiast użycia matcherów.
  • Autoryzacja tylko w middleware; dalej wymuszaj ją w server actions/route handlers.
  • Za dużo logiki w middleware i wzrost latencji w całej aplikacji.

Powiązane pytania

Next.js
Middleware w Next.js: do czego się nadaje i jakie ma ograniczenia?
#nextjs#middleware#edge
Next.js
Edge runtime vs Node.js runtime w Next.js — kiedy wybrać które?
#edge#runtime#nodejs