Этот вопрос проверяет умение проектировать API так, чтобы изменения не ломали существующих клиентов.
Основной подход — не ломать контракт API. Новые поля добавляются, а старые не удаляются. Используется версионирование API. Также применяются дефолтные значения и фича-флаги. Это позволяет обновлять backend без остановки клиентов.
Обратная совместимость API позволяет старым клиентам продолжать работать после изменений backend.
Добавление вместо изменения
Новые поля добавляются
Старые поля не удаляются сразу
Версионирование API
Версия в URL
Версия в заголовке
Версия в media type
Дефолтные значения
Клиенты игнорируют незнакомые поля
Backend возвращает безопасные значения
Feature toggle
Новое поведение включается по флагу
Старые клиенты получают прежнее поведение
GET /api/v1/users
GET /api/v2/users
Лучший способ обеспечить совместимость — проектировать API так, чтобы изменения были расширяющими, а не ломающими.