Вступить в клуб →
сложнаявопросТестирование REST API

В .proto номер удалённого поля переиспользовали под новое поле: что будет со старыми клиентами

В контракте gRPC-сервиса произошло изменение:

// было
message Order {
  int64 id = 1;
  string promo_code = 4;
}

// стало
message Order {
  int64 id = 1;
  int32 bonus_points = 4;
}

Часть клиентов ещё собрана со старой версией контракта.

Чего ожидать?

  • Ничего страшного: изменилось только имя поля, а клиенты сопоставляют поля сообщения по именам и просто не найдут promo_code
  • Старые клиенты не получат promo_code: поле опознаётся по номеру, а тег 4 теперь несёт другой тип значения
  • Сломается только представление сообщения в JSON, а бинарный формат к таким правкам схемы устойчив по построению
  • Проблема проявится лишь при разных версиях библиотеки protobuf у клиента и сервера, на одинаковых её не будет

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела