带有过滤器参数的 refrofit2 请求。 @Query 而不是@Path
refrofit2 request with filter param. @Query instead of @Path
我有以下要求,需要使用 Retrofit 2 库进行设置。
我发现了很多变体,但没有运气。
所以我的 URL 是:
http://server/api/v1/items?filter=param1==111;param2==222;param3==333;&select=param1;param2;param3
我试着写成下面的格式:
@GET("api/v1/items?filter=param1=={param1};param2=={param2};param3=={param3}")
Call<ItemResponse> getItems(@Path("param1") String param1, @Path("param2") String param2, @Path("param3") String param3);
但在这种情况下我有一个例外
java.lang.IllegalArgumentException: URL query string "filter=param1=={param1};param2=={param2};param3=={param3}" must not have replace block. For dynamic query parameters use @Query.
for method IAramexApi.getItems
所以,我需要使用@Query注解,但我不知道如何在我的案例中使用它。
我看到的每个示例都涵盖了以下查询:
method?param1==value1...
对于我的情况,我需要类似
的东西
method?filter=param1==value1...
请帮助我。
正确的做法是:
@GET("api/v1/items")
Call<ItemResponse> getItems(@Query("param1") String param1, @Query("param2") String param2, @Query("param3") String param3);
我有以下要求,需要使用 Retrofit 2 库进行设置。 我发现了很多变体,但没有运气。
所以我的 URL 是:
http://server/api/v1/items?filter=param1==111;param2==222;param3==333;&select=param1;param2;param3
我试着写成下面的格式:
@GET("api/v1/items?filter=param1=={param1};param2=={param2};param3=={param3}")
Call<ItemResponse> getItems(@Path("param1") String param1, @Path("param2") String param2, @Path("param3") String param3);
但在这种情况下我有一个例外
java.lang.IllegalArgumentException: URL query string "filter=param1=={param1};param2=={param2};param3=={param3}" must not have replace block. For dynamic query parameters use @Query.
for method IAramexApi.getItems
所以,我需要使用@Query注解,但我不知道如何在我的案例中使用它。
我看到的每个示例都涵盖了以下查询:
method?param1==value1...
对于我的情况,我需要类似
的东西method?filter=param1==value1...
请帮助我。
正确的做法是:
@GET("api/v1/items")
Call<ItemResponse> getItems(@Query("param1") String param1, @Query("param2") String param2, @Query("param3") String param3);