Android Retrofit2可选的@Path参数

拉法曼卡

在我的andorid应用中,我正在使用Retrofit2发出GET请求:

http://myapi.com/items/list

但我也想提出另一个要求,例如

http://myapi.com/items/list/filter/active:true,min_price:100

因此filter参数是可选的我正在尝试执行以下操作:

@GET("items/items/list{filter}")
Observable<ResponseItems> getItems(@Path("filter") String filter);

并像这样调用它:

service.getItems("")

和:

service.getItems("/filter/active:true,min_price:100")

但这是行不通的。因此,我最终创建了两个单独的服务调用,一个带有过滤器参数,另一个没有。我认为应该有更优雅的方法。

贝卢

因此,我已经看到了您想要实现的目标。

您的api声明应如下所示:

@GET("items/list/{filter}")
Observable<ResponseItems> getItems(@Path(value = "filter", encoded = true) String filter);

和呼叫service.getItems("")会导致http://myapi.com/items/list/被称为
呼叫service.getItems("filter/active:true,min_price:100")会导致http://myapi.com/items/list/filter/active:true,min_price:100被调用。

设置encoded@Path注释中属性是因为您的可选path参数包含/该属性并对其进行了改造,但没有该属性。

因此,正如我在评论中写道,最好使用两个声明:

@GET("items/list/")
Observable<ResponseItems> getItems();

@GET("items/list/filter/{filter}")
Observable<ResponseItems> getItems(@Path(value = "filter") String filter);

所以你可以这样称呼它 service.getItems("active:true,min_price:100")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Retrofit2:android POST参数和GET json数组

android:retrofit2 发布错误但成功?

必须具有返回类型或回调作为Android的最后一个参数Retrofit2?

ksoap2和retrofit2与android通信的区别

Android Retrofit2刷新Oauth 2令牌

Android-无法使用Retrofit2提取JSON

“已执行”错误(Retrofit2和Android)

找不到Android Retrofit2 reddit 404

使用Retrofit2的补丁请求无法在Android上运行

Android Hilt,Retrofit2和属性文件问题

Spring + Android(Retrofit2)GET请求返回null

使用RetroFit2和Android / Java的首次API调用

Android - 使用retrofit2 请求动态IP 地址

Retrofit2,Android,对数组的数组进行@Get解析

Android Retrofit2 POST调用未触发HTTP请求

Android Fragment中的Retrofit2如何正确实现?

Android Retrofit2:从异步延迟的 http 页面读取

Android Retrofit2中Part和PartMap之间的区别

在Android中使用Retrofit2库上传文件

Kotlin 的 android Rx-java + Retrofit2 错误

Android:Retrofit2 和 Kotlin 无法捕捉的异常

Retrofit2可以在Android 4.1.2上使用吗?我的应用导致了Retrofit2导致的致命异常

如何在Kotlin Android上使用Retrofit2,RxJava2读取JSON文件

使用Retrofit2和rxjava2对Android应用程序进行单元测试

通过 http retrofit2 请求发送 WAV 文件 - Android Studio

Retrofit2拦截器在Android中将特殊字符转换为问号

如何在数组响应android retrofit2中获取特定的响应数据

使用Retrofit2的Android Studio上位置0的JSON中的意外令牌#错误

具有Retrofit2和Mockito或Robolectric的Android单元测试