Может ли Retrofit поддерживать разные версии одного и того же API в Android - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть приложение для Android, и я использую Retrofit для выполнения http-запросов.На стороне сервера вышла обновленная версия API.Мое приложение должно поддерживать как старые, так и новые версии.Например:

  1. Старая версия: https://api.company.com/abc/def/2018-01-01/add
  2. Новая версия: https://api.company.com/abc/def/2019-01-01/add

Мой BASE_URL: https://api.company.com.

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

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Вот расширенный вариант приведенного выше ответа, но, с другой стороны, будет слишком сложно, если слишком много конечных точек:

@GET
Single<JsonResponse> getSomething(@Url String url);


String requestUrl = "....";
restApiService.getSomething(requestUrl);
0 голосов
/ 22 февраля 2019

Вы можете сделать что-то подобное с путем и вашим интерфейсом.

@GET("abc/def/{version}/add")
    Call<List<String>> getFilterValues(@Path(value = "version", encoded = true))

версия будет помещена в URL, где у вас есть {version}

Пример использования

String version = "2018-01-01";

if(useNewVersion){
    version = "2019-01-01";
}

Call<List<String>> call = api.getFilterValues(version);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...