Совместимость и версии API
Вопрос
Как ты развиваешь публичный API, чтобы не ломать существующих клиентов?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Различать совместимые и ломающие изменения
Совместимые: новые необязательные поля, параметры, эндпоинты
Ломающие только в новой версии, период поддержки старой, deprecation
Клиенты должны игнорировать неизвестные поля
Контрактные тесты и мониторинг использования старой версии
Что могут спросить следом
- Где держать версию: в пути или в заголовке?
- Как понять, что старой версией уже никто не пользуется?
Разбор
Главное различать совместимые и ломающие изменения. Добавить новое необязательное поле в ответ, новый эндпоинт или необязательный параметр можно без новой версии, если клиенты договорились игнорировать неизвестные поля. Удалить или переименовать поле, сменить тип, сделать параметр обязательным, поменять смысл это ломающие изменения. Их выпускаю в новой версии, например /v2, а старую поддерживаю заранее объявленный срок и помечаю устаревшей в документации и заголовках ответа. Чтобы не сломать случайно, у нас контрактные тесты от потребителей, а по логам смотрю, кто ещё ходит в старую версию, и предупреждаю их до отключения.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.