2014-12-23 2 views
0

Я пытаюсь обернуть мою голову вокруг этих версий вопроса, и я хотел бы попросить вас о помощи:ответов сервера версирование

Предположат, эти запросы производятся в формате JSON:

  • Say сервера для конечной точки/X, возвращает сообщение с полями A и B
  • на вашем Android-клиент версии приложения 1, вы ожидаете получить поля A и B, когда вы получите ответ от/X

A длинная строка, вы решите, что на вашем клиентском приложении Android 2 вам больше не понадобится поле B

Поскольку клиентское приложение для Android версии 1 все еще присутствует для некоторых пользователей, вы еще не можете взять поле B из ответа, который будет загромождать ответ для новых клиентов андроида с устаревшими полями


что бы хороший подход к версии этих ответов?

  • Ручка управления версии на сервере, и отправить правильный ответ в соответствии с андроидом версии клиента (или в соответствии с запрашиваемой версией схемы, что клиент запрашивает)
  • ли Protobuf версий помощи в этом случае? Поскольку кажется, что нам всегда приходилось отправлять устаревший параметр B для более новых ответов
  • Любые другие предложения?
+0

Был похож на одно из моих приложений. Я бы выбрал первый вариант «Управление версиями на сервере» и отправку соответствующего ответа в соответствии с версией клиента Android (или в соответствии с запрошенной версией схемы, которую клиент запрашивает) » – Rohit5k2

ответ

0

Ручка управления версиями на сервере, и отправить правильный ответ согласно андроида версии клиента (или в соответствии с запрашиваемой версии схемы, что клиентские запросы)

Я d обрабатывает управление версиями на сервере. Вы не знаете, какие другие изменения будут внесены в будущие версии.

Помогает ли версия protobuf в этом случае?

Ну, своего рода. Если клиент знает параметр A, а не B, он сможет прочитать A без проблем. Клиент, который знает обоим, сможет читать оба. В любом случае поведение клиента будет правильным, и единственная проблема - это избыточный параметр (который может повредить производительность, но не корректность).

Любые другие предложения?

Отделить сервер от версии №1 от версии №2 и отправить соответствующие параметры. Вы даже можете установить отдельный API для каждой версии API. Поэтому клиенты V1 будут подключаться к www.myapi.com/api/apiv1, а V2 подключается к www.myapi.com/api/apiv2 или что-то подобное.