Сначала контракт, потом код ✊🏻
Очень много API-команд живут в режиме «давай быстрее хендлер, спека потом». Проблема в том, что это «потом» почти всегда превращается в рассинхрон: фронт ожидает одну структуру, бэк отдает другую, QA тестирует третью, а интеграции сыпятся на деталях, которые никто заранее не проговорил.
OpenAPI-first - это не бюрократия и не «документация ради документации». Это способ заранее зафиксировать договоренности: какие endpoint’ы реально существуют, какие статусы и ошибки система обещает, какие поля обязательные, где версия контракта и как мы меняем API без внезапной боли у клиентов.
На практике такой подход резко снижает шум в коммуникации. Спор «я думал, тут будет так» заменяется diff’ом openapi.yaml в MR. Появляется нормальное ревью API до написания бизнес-логики, можно генерировать типы и часть серверного кода, а негативные сценарии вроде 401/403/409/422 становятся частью дизайна, а не «ой, потом докрутим».
Рабочий процесс обычно простой: сначала меняем спецификацию, потом смотрим контрактный diff, после этого запускаем генерацию, реализуем логику за интерфейсами, прогоняем проверку соответствия контракту и сквозные проверки интеграций. Такая последовательность дисциплинирует команду и убирает половину случайных несовместимостей между слоями.
Чаще всего всё ломается в четырёх местах: спека пишется задним числом для галочки, не фиксируется единый формат ошибок, делаются breaking changes без явного версионирования, а во внешний контракт утаскиваются внутренние поля БД и технические детали домена. Потом это очень дорого разгребать.
OpenAPI-first не делает архитектуру идеальной автоматически, но очень заметно снижает стоимость самых дорогих багов - коммуникационных. Контракт в таком подходе перестает быть приложением к коду. Он и есть первая часть кода, с которой начинается реализация.
· 23.04
Какая знакомая боль! 😅
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён