Как версионировать protobuf?

Middle
268 просмотров
AFK Offer AI

Золотое правило — не меняй номера и типы существующих полей. Добавляй новые поля с новыми номерами. Удалённые поля помечай reserved: reserved 3, 5; reserved "old_field". Это backward compatible — старый код игнорирует новые поля, новый код даёт default values старым. Для breaking changes — новый package version: package myapi.v2. Или новый сервис рядом. Никогда не переиспользуй удалённые номера полей — старые данные в базе/кеше будут декодированы неправильно. Файлы proto — часть API контракта, версионируй как код.

Следующий вопрос

Как документировать API?