Итоги курса
Курс об API-роутах в Next.js.
Что ты узнал
- Route Handlers —
route.tsвapp/api/ - Обработка запросов — JSON, FormData, query, cookies
- Ответы —
Response.json, статусы, стриминг - Валидация — Zod,
safeParse,z.infer - Аутентификация — токены, cookies, JWT через
jose - CORS и безопасность — заголовки, проверки, rate limiting
- Стриминг и SSE —
ReadableStream, AI-ответы - Webhooks — проверка подписи, идемпотентность
- Практика — REST API и интеграция с фронтом
Ключевые идеи
Route Handlers для внешних клиентов. Внутренние мутации — Server Actions.
Всегда валидируй через Zod. Тип из схемы, проверка данных.
Проверяй права на каждой операции. API публичен.
CORS настраивай явно. * не для продакшена.
Идемпотентность для webhooks. Проверяй ID события.
Стриминг для AI и прогресса. ReadableStream и SSE.
TanStack Query на клиенте. Кеш, инвалидация, оптимистичные обновления.
Частые ошибки
- Использовать
*в CORS с credentials - Не проверять права
- Забыть валидацию
- Читать тело дважды
- Синхронно обрабатывать webhooks
- Не использовать
timingSafeEqualдля подписей - Игнорировать rate limiting
- Смешивать API и Server Actions
Что дальше
- OpenAPI — документация API
- tRPC — типобезопасный API
- GraphQL — альтернатива REST
- Prisma — глубже
- Auth.js — полноценная аутентификация
- Мониторинг — Sentry, логирование
Полезные ссылки
- Next.js Route Handlers: nextjs.org/docs/app/building-your-application/routing/route-handlers
- Zod: zod.dev
- jose: github.com/panva/jose
- Upstash Ratelimit: github.com/upstash/ratelimit
- Vercel AI SDK: sdk.vercel.ai
Заключение
API-роуты — для интеграций с внешними клиентами: мобильными приложениями, webhooks, сторонними сервисами. Для внутренних нужд используй Server Components (чтение) и Server Actions (запись). Правила: валидируй входные данные, проверяй права, настраивай CORS, делай идемпотентные webhooks, стриминг для AI.