在Retrofit 2中如何使用注释进行请求?

时间:2018-06-30 07:52:04

标签: android retrofit

我有一个用于请求URL的APIService类。

我想将“ / products?page = 1”设置为注释@GET,但我希望可以更改参数和值。

这是我的APIService类:

public interface APIService {

 @GET("products?{parameter}={value}")
  Call<List<DataModelProducts>> getProducts(@Path("parameter") String  parameter,@Path("value") String value);
}

如何在应用程序中更改“参数”和“值”?

3 个答案:

答案 0 :(得分:3)

我相信使用@Query注释如下就足够了:

@GET("group/{id}/users/list")
Call<List<User>> groupList(@Path("id") int groupId, @Query("sort") String sort);

它将创建一个请求,例如:.../users/list?sort=desc

或者,如果您希望能够同时更改上述示例请求的排序/描述,则可以使用@QueryMap

@GET("group/{id}/users/list")
Call<List<User>> groupList(@Path("id") int groupId, @QueryMap Map<String, String> options);

这将创建一个请求,例如:.../users/list?key=valueMap<String, String> options

中指定键/值的位置

有关Retrofit2的不同注释的更多信息,您可以访问 Retrofit API Declarations

答案 1 :(得分:1)

您的页码作为查询参数传递。要在改造中传递查询参数,您需要像这样传递它:

public interface APIService {

 @GET("products")
 Call<List<DataModelProducts>> getProducts(@Query("page") String pagerNumber);
}

编辑:使用查询地图:

public interface APIService {

 @GET("products")  Call<List<DataModelProducts>> getProducts(@QueryMap HashMap queryParams); }

在这里,您添加为键的任何内容都将替换“页面”,并添加值。 例如,如果哈希图具有: queryParams.put(“ something”,“ value”); ..

您的要求将如下:

  

url?something = value

答案 2 :(得分:0)

尝试一下

clipRect