Версионирование API: как менять контракт без остановки клиентов

Как версионировать API, отличать совместимые изменения от ломающих, объявлять устаревание и контролировать миграцию клиентов.

Контракт API используют другие команды и компании, поэтому небольшое переименование поля может остановить чужой процесс раньше, чем разработчик заметит ошибку.

Разделите типы изменений

Новое необязательное поле обычно совместимо, а удаление свойства, смена типа или нового обязательного параметра ломает существующий клиент. Классифицируйте заранее.

Поддержите переход

Запустите новую версию параллельно, опубликуйте понятный срок прекращения старой и дайте клиентам тестовую среду с примерами. Владельцев найдите.

Наблюдайте использование

Измеряйте вызовы каждой версии, ошибки и неизвестных потребителей, затем связывайтесь с отстающими до отключения. Дату не скрывайте.

Регулярные автоматические контрактные тесты и подробный журнал изменений заметно снижают риск, но окончательное решение об удалении версии принимайте только после документального подтверждения миграции всех критичных потребителей.

Базовую защиту интерфейса разбирает статья про безопасность API. Обмен между системами проектируйте с идемпотентностью.