API routes w Next.js: przykłady Route Handlerów

Przykłady Route Handlerów w Next.js

API routes w Next.js (Route Handlers): GET, POST, autoryzacja | We.Inc

Gotowe do skopiowania przykłady Route Handlerów Next.js dla App Routera: GET z parametrami zapytania, POST z walidacją, parametry dynamiczne jako promise, autoryzacja, CORS i webhooki.

W App Routerze endpoint API to plik route.ts wewnątrz app, na przykład app/api/todos/route.ts. Eksportujesz funkcje async nazwane jak metody HTTP, np. GET i POST; każda dostaje Request i zwraca Response, zwykle Response.json(). Segmenty dynamiczne przychodzą jako promise params, na który robisz await. Od Next.js 15 handlery GET są domyślnie dynamiczne.

Podstawy Route Handlerów

API routes w Pages Routerze używały obiektów req i res. Route Handlers używają zamiast nich standardowych obiektów Web Request i Response, na czym potyka się każdy, kto kopiuje starsze odpowiedzi. Poniżej znajdziesz wzorce potrzebne w prawdziwej aplikacji, każdy napisany dla aktualnego App Routera, plus mały tester, który pokazuje kody statusu, jakie powinien zwracać POST z walidacją.

Najczęściej zadawane pytania

Czy API routes w Next.js są przestarzałe?

Trasy pages/api nadal działają w Pages Routerze. W App Routerze odpowiednikiem jest Route Handler, czyli plik route.ts, który używa obiektów Web Request i Response i nie potrzebuje konfiguracji bodyParser.

Jakie metody HTTP może eksportować route.ts?

GET, POST, PUT, PATCH, DELETE, HEAD i OPTIONS. Wywołanie metody, której nie wyeksportowałeś, zwraca 405 Method Not Allowed.

Dlaczego muszę robić await na params?

Od Next.js 15 params w argumencie context to promise. Napisz const { id } = await params. Typ pomocniczy RouteContext, generowany przez next dev, next build lub next typegen, daje Ci otypowane params na podstawie ścieżki trasy.

Czy Route Handlery GET są cache'owane?

Domyślnie już nie. Next.js 15 zmienił handlery GET ze statycznych na dynamiczne. Cache włączysz z powrotem przez export const dynamic = 'force-static' lub wartość revalidate. Przy włączonych Cache Components umieść use cache w funkcji pomocniczej wywoływanej przez handler, a nie w treści handlera.

Route Handler czy Server Action?

Server Action używaj do mutacji wywoływanych przez Twoje własne formularze i przyciski. Route Handler stosuj, gdy URL wywołuje coś spoza Twojego drzewa React: aplikacja mobilna, webhook, zadanie cron lub skrypt zewnętrzny.

Struktura plików

Kody statusu zrozumiałe dla klientów

Lista kontrolna bezpieczeństwa

Przykłady Route Handlerów

GET z zapytaniem wyszukiwania

app/api/todos/route.ts. Parametr q filtruje listę; puste zapytanie zwraca wszystko.

POST z walidacją Zod i sprawdzeniem autoryzacji

Zwraca 401 bez sesji, 400 z błędami pól przy błędnym body, a w pozostałych przypadkach 201 z nowym rekordem. getSession zastępuje Twoją bibliotekę do uwierzytelniania.

Segment dynamiczny z params po await

app/api/todos/[id]/route.ts. W Next.js 15 i nowszych params to promise.

CORS dla jednego zaufanego originu

Odpowiada na preflight przeglądarki i na właściwe żądanie z tym samym dozwolonym originem.

Wywołanie handlera z Client Component

Funkcja pomocnicza fetch najpierw odczytuje kod statusu, więc formularz może pokazać błędy pól z odpowiedzi 400.

API routes w Pages Routerze a Route Handlers

To samo zadanie, inne API

Tester POST

Edytuj body JSON, wybierz, czy wywołujący jest zalogowany, i zobacz kod statusu oraz odpowiedź, jaką odesłałby przykład POST z walidacją.

Metoda

Body żądania (JSON)

Wywołujący ma ważną sesję

Odpowiedź

PUT pokazuje 405, które Next.js wysyła dla metody niewyeksportowanej w pliku.

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony