我有一个用于请求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);
}
如何在应用程序中更改“参数”和“值”?
答案 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=value
在Map<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