Динамическая установка оператора @GET с модификацией - PullRequest
1 голос
/ 27 апреля 2019

Пример запроса к API:

https://api.example.com/api/3.0/song/{song_id}.json?apikey={your_api_key}

Итак, в моей деятельности

//retrofit
final Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(C.BASE_URL_DETAIL)     // "https://api.example.com/api/3.0/song/"                                           
    .addConverterFactory(GsonConverterFactory.create())
    .build();
SongInterface request = retrofit.create(SongInterface.class);
//call
Call<SongObject> call =request.getDetails(C.MY_API_KEY);

Мой интерфейс для id песни = 10973

@GET("10973.json?")
Call<SongObject> getDetails(
        @Query("apikey") String key
);

Он работает просто отлично, и я получаю данные, как и ожидалось.Тем не менее, я не могу понять, как вызвать другую песню с другим идентификатором и повторно использовать код.Можно ли как-то добавить идентификатор в качестве параметра Query?(Похоже, API не настроен на это).Как я могу динамически обновить строку для интерфейса внутри @GET.Мои попытки достичь этого закончились ошибками.

1 Ответ

2 голосов
/ 27 апреля 2019

Привет, да, верно, это абсолютно правильный путь, поэтому отправьте "GET" запрос, и как вы просили получить данные с соответствующим идентификатором, здесь how Вы можете достичь этого

@GET("{songId}.json?")
 Call<SongObject> getDetails(
    @Path("songId") String songId, 
    @Query("apikey") String key
 );

После этого вы можете назвать это просто, вы сделали это.

НРАВИТСЯ

Call<SongObject> call = request.getDetails(YOUR_SONG_ID,C.MY_API_KEY);
...