且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

改进错误URL查询字符串不能有替换块

更新时间:2023-02-26 11:43:00

查询参数有自己的注释,自动附加到URL。

  @GET(/ users?filters [0] [operator] = equals)
UserDto retrieveUsersByFilters (
@Query(filters [0] [field])String nameFilter,
@Query(filters [0] [value])String value);

您可以阅读关于 @Query 的更多信息 Javadoc


I have this function

      @GET("/users?filters[0][field]={param}&filters[0][operator]=equals&filters[0][value]={value}")
UserDto retrieveUsersByFilters(@Path("param") String nameFilter, @Path("value") String value);

I try to call it like this :

   UserDto currentUser = interfaceUser.retrieveUsersByFilters(User.LOGIN, login);

But i have error :

retrofit.RetrofitError: InterfaceUser.retrieveUsersByFilters: URL query string "filters[0][field]={param}&filters[0][operator]=equals&filters[0][value]={value}" must not have replace block.

I already test url on firefox and it work fine.

Thank's for your responses

Edit

Solution:

          @GET("/users?filters[0][operator]=equals")
          UserDto retrieveUsersByFilters(
          @Query("filters[0][field]") String nameFilter,
          @Query("filters[0][value]") String value);

Query params have their own annotation which automatically appends to the URL.

@GET("/users?filters[0][operator]=equals")
UserDto retrieveUsersByFilters(
    @Query("filters[0][field]") String nameFilter,
    @Query("filters[0][value]") String value);

You can read more about @Query on its Javadoc