Вопрос проверяет умение проектировать устойчивый контракт (форматы, ошибки, версии, совместимость) и процесс согласования между командами.
Обычно начинают с описания требований и сценариев, затем фиксируют контракт в виде спецификации (часто OpenAPI) или схем (JSON Schema). Договариваются о форматах запросов/ответов, кодах ошибок и правилах обратной совместимости. Часто применяют подход contract-first: сначала спецификация, потом реализация. Для снижения конфликтов подключают мок-серверы и контрактные тесты. Изменения проводят через версионирование или эволюцию схем с сохранением совместимости.
Процесс проектирования API-контракта — это сочетание технических договорённостей и регламента изменений, чтобы фронтенд не «падал» от неожиданных правок.
Определение: API-контракт — это договорённость о том, какие запросы можно отправлять (методы, параметры, заголовки) и какие ответы придут (структура JSON, статусы, ошибки, ограничения), включая правила изменения этих договорённостей.
Сбор сценариев
Какие страницы/фичи должны работать
Какие данные нужны фронту (минимально достаточный набор)
Проектирование формата
Ресурсы и эндпоинты (/users, /orders/{id})
Поля, типы, обязательность, значения по умолчанию
Фиксация спецификации
OpenAPI/Swagger или JSON Schema
Примеры запросов/ответов, включая ошибки
Параллельная разработка
Фронт использует mock или stub (мок-сервер)
Бэк реализует согласно спецификации
Проверка совместимости
Контрактные тесты, CI-проверки
Ревью изменений контракта как отдельный артефакт
Ошибки
Единый формат ошибки (код, сообщение, детали)
Как отличать валидацию от системной ошибки
Пагинация, сортировка, фильтры
Параметры (limit, cursor, sort)
Нейминг и стабильность
snake_case vs camelCase
Можно ли добавлять поля без предупреждения (обычно да)
Backwards compatibility
Добавление новых полей — безопасно
Удаление/переименование — через версию или длительную фазу deprecated
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Некорректные данные",
"details": { "email": "invalid format" }
}
}
Эволюция без версии (предпочтительно)
Добавлять поля, не ломая старые клиенты
Новое поведение — за флагом/параметром
Версионирование (когда ломаете контракт)
/v2/... или Accept: application/vnd.app.v2+json
Чёткая политика поддержки версий (например, 6–12 месяцев)
Контракт лучше фиксировать формально (OpenAPI/Schema), договориться о правилах изменений и использовать моки + контрактные тесты — это уменьшает «сломали фронт» и ускоряет параллельную разработку.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию