Next.js Route Handlers: Создание API Endpoints в App Router
Автор конспекта: Стогниева Виктория
🎯 1. Введение: Что такое обработчики маршрутов?
Обработчики маршрутов (Route Handlers) — это мощный механизм в Next.js, который позволяет
создавать собственные API-эндпоинты прямо внутри Next.js приложения. Это способ создавать
пользовательские обработчики запросов для конкретных URL-адресов, используя стандартные
веб-интерфейсы Request и Response.
Можно думать о них как о создании небольшого бэкенд-сервиса, который работает вместе с вашими страницами и компонентами.
Хотя Route Handlers — универсальный инструмент для создания API, они также незаменимы для:
- Создания мок-эндпоинтов на сервере
- Тестирования стратегий получения данных
- Тестирования ревалидации данных
🚀 2. Ключевые сценарии использования: Зачем нужны Route Handlers?
📊 1. Прямая работа с данными
- Взаимодействие с источниками данных (базы данных, локальные файлы)
- Чтение данных из локальных файлов (например,
JSON) - Вынос логики доступа к данным за пределы
UI-компонентов
🔄 2. Создание прокси или шлюза
- Паттерн
back-to-backзапросы - Сокрытие
API-ключей и секретов (вызов на сервере, а не клиенте) - Упрощение сложных
API(предоставление фронтенду только нужных данных)
🏗️ 3. Делегирование серверной логики
- Соответствие Принципу единственной ответственности (
Single Responsibility Principle) - Фокус компонентов страниц на рендеринге
UI - Выделение бизнес-логики в отдельные обработчики
- Чище, модульнее, проще в поддержке
🛠️ 3. Пошаговое руководство: Создаем первый эндпоинт
📁 3.1. Файловая структура и именование
- route.ts
📌 Правила создания:
- Специальное имя файла:
route.ts(или.js) - URL = Путь к файлу:
app/api/title/route.ts→/api/title
- Важное ограничение: На одном уровне с
route.tsне должно бытьpage.ts/page.tsx
💻 3.2. Написание функции-обработчика
Внутри файла route.ts нужно экспортировать асинхронную функцию, названную в честь
HTTP-метода, который она будет обрабатывать.
🔧 Поддерживаемые HTTP-методы
Next.js поддерживает следующие HTTP-методы для именования функций-обработчиков:
Важно: Если вы попытаетесь сделать запрос с использованием неподдерживаемого метода, Next.js
автоматически вернет ошибку 405 Method Not Allowed.
📡 4. Как обратиться к эндпоинту из приложения
Для получения данных из созданного эндпоинта внутри страницы или компонента Next.js используется
стандартный fetch API.
📝 Пример кода: Запрос данных в серверном компоненте
🎯 Ключевая идея
По сути, это запрос "к самому себе" 🔄. Однако важно понимать, что:
- 🖥️ На сервере: Когда и серверный компонент, и эндпоинт выполняются на сервере
Next.js, этотfetch-запрос не создает реального сетевого вызова через интернет. - ⚡ Оптимизация:
Next.jsоптимизирует его до прямого вызова функции внутри серверного процесса, что делает его чрезвычайно эффективным. - 🌍 Переносимость: Использование относительных путей (например,
/api/title) является лучшей практикой, так как это делает код переносимым между различными окружениями (development,production).
Проще говоря: Когда серверный компонент запрашивает данные у Route Handler, это похоже на
вызов функции внутри одного приложения, а не на HTTP-запрос к удаленному серверу.
🔍 5. Доступ к данным запроса: Headers и Cookies
Внутри обработчиков маршрутов у вас есть доступ к метаданным входящего HTTP-запроса с помощью
специальных функций из next/headers.
📋 Функции для работы с запросом
📝 Пример: Использование headers()
📝 Пример: Использование cookies()
✅ 6. Ключевые выводы
1. 🚀 Создание API на лету
Обработчики маршрутов — это встроенный в Next.js способ быстрого создания API-эндпоинтов с
помощью простого соглашения об именовании файлов (route.ts).
2. 🗂️ Структура папок = URL
Путь к эндпоинту напрямую определяется его местоположением в файловой системе внутри директории
app, что делает навигацию и структуру проекта интуитивно понятными.
3. 🧩 Инкапсуляция и повторное использование
Они позволяют инкапсулировать сложную серверную логику (работа с БД, сторонними API) в чистые,
переиспользуемые эндпоинты, отделяя логику данных от логики представления.
Итог: Route Handlers превращают Next.js из фреймворка для рендеринга страниц в полноценную
платформу для создания веб-приложений с собственной серверной логикой, объединяя преимущества
фронтенда и бэкенда в единой кодовой базе.



