Сценарий

Serverless REST API на функциях за API-шлюзом

Публикуйте JSON API без монолитного роутера: группируйте эндпоинты, которые меняются вместе, держите аутентификацию на API-шлюзе, настраивайте CORS и лимиты централизованно и версионируйте пути до ломающих изменений схемы.

Обновлено: 2026-06-28

Суть ответа

Serverless REST API на функциях за API-шлюзом. Группируйте REST-эндпоинты, которые деплоятся вместе; аутентификацию, CORS и лимиты по возможности держите на API-шлюзе.

Когда подходит и когда нет

  • Внутренние API
  • Интеграции с партнёрами
  • Поверхности B2B с несколькими клиентами

На что обратить внимание

  • Десятки крошечных репозиториев и деплой-пайплайнов создают хаос — командам всё равно нужны общие аутентификация, CORS и лимиты для публичных JSON API.

Почему монолитный REST-роутер замедляет команду

Связывание несвязанных эндпоинтов в один деплой затягивает разбор инцидентов и замедляет выпуск изменений.

Масштабировать весь бинарник ради одного горячего маршрута — лишняя память, когда всплеск приходится на узкий срез JSON API.

Почему дробление на микросервисы тоже мимо

Десятки крошечных репозиториев и деплой-пайплайнов создают хаос — командам всё равно нужны общие аутентификация, CORS и лимиты для публичных JSON API.

Группы маршрутов на функцию

Группируйте REST-эндпоинты, которые деплоятся вместе; аутентификацию, CORS и лимиты по возможности держите на API-шлюзе.

Валидируйте вход на границе хендлера и используйте префиксы путей для версионирования до ломающих изменений JSON-контрактов.

Гигиена REST API на шлюзе

Лимиты запросов

Лимиты на шлюзе защищают общие зависимости от злоупотреблений и вышедших из-под контроля клиентов.

CORS

Настраивайте CORS для браузерных клиентов явно и централизованно — без заголовков в каждом хендлере.

Версионирование

Вводите префиксы путей до того, как отправите ломающие изменения в публичные контракты.

Как выставлять REST API из функций Inquir

1

Карта ресурсов

Моделируйте ресурсы существительными и стандартизируйте единый формат ошибок для всех маршрутов.

2

Реализовать хендлеры

Валидируйте вход на границе, чтобы плохие запросы падали быстро и с предсказуемой ошибкой.

3

Нагрузочный тест

Замеряйте параллелизм по каждому маршруту, а не только суммарный RPS.

Хелпер для единого формата JSON-ошибок

Единый формат ошибок упрощает клиентские SDK и партнёрские интеграции.

util.mjs
export function jsonError(status, code, message) {
  return { statusCode: status, body: JSON.stringify({ error: { code, message } }) };
}

Когда этот сценарий подходит вашей команде

Когда это уместно

  • Внутренние API
  • Интеграции с партнёрами
  • Поверхности B2B с несколькими клиентами

Когда лучше выбрать другое

  • Монолит на фреймворке уже работает и команда совсем маленькая

Вопросы и ответы

Можно ли поднять GraphQL на одной функции?

Да — одна функция может держать схему и резолверы; лимиты, аутентификация и холодные/тёплые старты по-прежнему действуют на уровне шлюза.

Насколько мелко дробить REST-функции?

Группируйте то, что деплоится и падает вместе; отдельная функция на каждый путь взрывает операционный шум — ищите баланс, который команда сможет поддерживать.

Где живут проверка API-ключей и JWT?

По возможности держите аутентификацию на уровне шлюза: хендлеры получают уже проверенный контекст и остаются простыми в тестировании.