Обратная совместимость API для мобильных клиентов
Вопрос
Бэкенд хочет переименовать поле в ответе API. Что нужно учесть из-за мобильных клиентов?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Ничего: клиенты с включённым автообновлением получат новую версию в течение часа после релиза
- Достаточно выпустить новую версию приложения в тот же день и поднять минимальную версию через неделю
- Переименование безопасно, если тип поля не изменился: JSON-декодеры сопоставляют поля по типу и порядку
- Старые версии живут месяцами: нужно отдавать оба поля или версионировать API, пока старых клиентов многоправильный ответ
Разбор
Мобильные клиенты нельзя обновить синхронно с бэкендом: часть пользователей отключила автообновление, часть не заходит месяцами. Поэтому изменения API делают аддитивными (добавить новое поле, старое оставить), версионируют эндпоинты или используют серверно-управляемый контракт. Удаление старого поля происходит после проверки статистики версий. Новая версия в тот же день не решает проблему уже установленных. Декодеры сопоставляют поля по имени, а не по типу и порядку.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.