在没有&符号的情况下改进查询注释

时间:2016-06-29 07:21:27

标签: android rest retrofit okhttp retrofit2

我正在尝试使用Retrofit 2.0对移动后端进行API调用。在我的API调用中,我必须对此URL进行必要的调用

  

https://api.backendless.com/v1/data/Users?where=followings.objectId=%270B3BA7F9-260F-B378-FF9A-3C2448B8A700%27

要在Retrofit中形成此URL,我一直在使用以下界面

@GET("Users?where=")
Call<List<User>> getFollowers(@Query("followings.objectId") String objectId);

此接口调用在查询参数之前放置一个&符号,并生成如下所示的URL

  

https://api.backendless.com/v1/data/Users?where=&followings.objectId=%270B3BA7F9-260F-B378-FF9A-3C2448B8A700%27

我尝试使用Path注释来解决这个问题,但我不断得到“URL查询字符串必须没有替换块。对于使用@Query的动态查询参数”错误。

我尝试连接的API需要“where =”子句进行设计过滤。我无权改变这一点。我想要的是以某种方式告诉Retrofit不要在查询参数之前放置一个&符号或此问题的任何变通方法。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

@GET( “{路径}”) 呼叫&GT; getFollowers(@Path(“path”)path,@ Query(“followings.objectId”)String objectId);

getFollowers(“Users?where =”,...)

答案 1 :(得分:0)

对于那些寻求类似答案的人,我提出了以下解决方案

我用@Url

声明了我的界面
@GET
Call<List<User>> getFollowers(@Url String objectId);

并生成相关的URL部分作为扩展方法

public String toFollowerRequest(){
    return RestGlobals.BASE_URL + "Users?where=followings.objectId=%27" + objectId + "%27";
}