Dopasowywanie tras

Wzorce path-to-regexp, tej samej składni używa Next.js - parametry nazwane, wildcardy i to, jak dopasowane wartości trafiają do funkcji.

Wzorce tras obsługuje biblioteka path-to-regexp - ta sama składnia, której Next.js używa w polu matcher obiektu config. Parametry ze ścieżki wyłuskują się przy okazji dopasowania i trafiają do event.params.

Przykłady

Najszybciej zrozumieć to na przykładach. W każdym z nich zakładka „Wzorzec” pokazuje zapis, a „Wynik” - które ścieżki go przechodzą.

Ścieżka dosłowna

Pasuje wyłącznie do /dashboard, bez żadnych parametrów.

  /dashboard
  /
  /home
  /dashboard [PASS] 
  /settings

Warianty w nawiasach

Alternatywa (v1|v2) łapie oba prefiksy naraz, więc jeden wpis obsłuży dwie wersje API.

  /(v1|v2)/:path*
  /
  /home
  /v1/anything [PASS] 
  /v2/anything [PASS] 
  /settings

Parametry

Parametr zapisuje się jako :nazwa. Pod tą właśnie nazwą wartość segmentu trafia później do event.params.

Jeden segment

Łapie /dashboard/cokolwiek i oddaje parametr team o wartości cokolwiek.

  /dashboard/:team
  /
  /home
  /dashboard
  /dashboard/team1 [PASS] 
  /dashboard/team2 [PASS] 
  /settings

Segment parametryczny nie musi kończyć ścieżki. Postawiony w środku wymaga, żeby zgadzało się również to, co idzie po nim:

  /dashboard/:team/delete
  /
  /home
  /dashboard
  /dashboard/team1
  /dashboard/team2/delete [PASS] 
  /settings

Segment opcjonalny

Znak zapytania zwalnia segment z obowiązku istnienia: wzorzec przechodzi zarówno dla samego /team, jak i dla /team/cokolwiek. W pierwszym przypadku slug zostaje pusty.

  /team/:slug?
  /
  /home
  /dashboard
  /team                [PASS] 
  /team/team1          [PASS] 
  /team/team2/settings
  /settings

Ogon opcjonalny

Zero segmentów lub więcej

Gwiazdka zbiera całą resztę ścieżki do tablicy: /team/team2/settings daje slug o wartości ["team2", "settings"]. Zero powtórzeń też jest dopuszczalne, więc sam /team przechodzi.

  /team/:slug*
  /
  /home
  /dashboard
  /team/team1          [PASS] 
  /team/team2/settings [PASS] 
  /settings

Ogon wymagany

Jeden segment lub więcej

Plus zachowuje się jak gwiazdka, z jedną różnicą: wymaga przynajmniej jednego segmentu, więc samo /team już odpada.

  /team/:slug+
  /
  /home
  /dashboard
  /team/team1          [PASS] 
  /team/team2/settings [PASS] 
  /settings

Czy ta strona była pomocna?

M↓obsługiwane.

Spis treści