По сути, вы можете сделать это несколькими способами.На самом деле зависит от ваших требований, но обычно реальность представляет собой смесь следующих вещей.
Как правило, подумайте о модели данных, которая будет считаться совместимой.Если договор не может быть сохранен или вы понимаете, что необходимы серьезные изменения, представьте новую версию API.Если старые клиенты не могут быть поддержаны, принудительно обновите.Вы также можете договориться о политике относительно продолжительности поддержки каждой предыдущей версии и последующего принудительного обновления, это сделает вашу жизнь намного проще и проще, чем поддержка десятков версий API.
Модель данных с обратной совместимостью
Вы должны мыслить в обратном направлении с каждым выпуском:
Подумайте об инкрементном моделировании с каждым циклом выпуска,Таким образом, вы можете хранить вещи.
Когда вы забудете об этом и вам нужно переключить поведение на основе данных:
Произошло со мной в годы моей стажировки.Просто вы должны декодировать, какая это может быть версия, основываясь на данных, если вы забудете добавить версию протокола.С самого начала вы всегда можете иметь поле версии на данных.Кроме того, вы также можете добавить набор совместимых версий анализатора.
Включить версию протокола в данные:
{
"data": [ arbitrary data model],
"protocolVersion": "v1"
}
На основе версии протокола вы можете решить, какобрабатывать данные на стороне сервера.Вам не нужно помнить версию клиента, только протокол.Так как вы можете выпустить: 1.0.0, 1.0.1, 1.1.0, и вы изменяете протокол только в 1.2.0.
Но я думаю, что проблема заключается в том, что при дальнейшем изменении данных меняется и поведение при обработке на стороне сервера.
Версионный API
Иногда вы видите различные пути для основных версий:
Используется при нарушении обратной совместимости или после полного пересмотра.Поэтому не каждая версия будет иметь приращение.
Используйте параметр запроса с версией клиента:
Аналогично предыдущему, просто написано по-другому.Хотя я думаю, что это не тот способ, которым вы хотите отказаться.
Отслеживание выпусков клиентов и используемых версий услуг
В действительности существует несколько запросов и несколько версий служб.используется все время для одной версии клиента.Это делает вещи еще сложнее поддерживать.
Все время, документ и отслеживать.Управление версиями и выпусками очень важно.Знайте хэш git, из какой версии вы создали, много раз это может сбить с толку, и вы просто изменили только один параметр после выпуска в качестве быстрого исправления и послезавтра больше не совместимы.
Сопоставьте все версии сервисов с версией клиента в каждом выпуске, узнайте, какой коммит вы действительно создали, и используйте управление тегами и релизами.
Проверяйте все перед каждым выпуском
Имейте четкие требования к обратной совместимости.Может быть, вы поддерживаете только две более старые версии, а затем протестируйте со всеми двумя клиентами новый клиент с сервером, который будет выпущен.Документ все.И когда вы соответствуете вашим критериям для выпуска, пойти с ним.
Резюме
Реальность - это смесь решений.Иметь четкие требования по обратной совместимости.Поэтому вы можете тестировать перед каждым выпуском.Когда это необходимо, принудительно обновите.Следите за выпусками и документируйте версии каждого клиента со всеми службами, используемыми с их версиями.