首页 > 解决方案 > 使用改造动态设置 @GET 语句

问题描述

对 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
);

它工作得很好,我按预期接收数据。但是,我不知道如何用另一个 id 调用另一首歌曲并重用代码。我可以以某种方式将 ID 添加为查询参数吗?(API 似乎没有设置为允许这样做)。如何将字符串动态更新到@GET 中的接口。我实现这一目标的尝试都以错误告终。

标签: androidapigetretrofit

解决方案


嘿,是的,这是绝对正确的方式,所以发送“GET”请求,就像您要求获取具有相应 ID 的数据一样,这是您如何实现它

@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);

推荐阅读