Урок 12

Итоги курса

Курс об 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.