Android 2可选@Path参数

Android 2可选@Path参数,android,retrofit2,Android,Retrofit2,在我的android应用程序中,我正在使用2发出GET请求: http://myapi.com/items/list 但我也想提出另一个要求,例如: http://myapi.com/items/list/filter/active:true,min_price:100 因此,过滤器参数是可选的。我正在努力做到以下几点: @GET("items/items/list{filter}") Observable<ResponseItems> getItems(@Path("filte

在我的android应用程序中,我正在使用2发出GET请求:

http://myapi.com/items/list
但我也想提出另一个要求,例如:

http://myapi.com/items/list/filter/active:true,min_price:100
因此,过滤器参数是可选的。我正在努力做到以下几点:

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


但它不起作用。因此,我最终创建了两个独立的服务调用,一个使用filter param,另一个不使用filter param。不过,我认为应该有更优雅的方法。

所以我已经看到了您试图实现的目标

您的api声明应该是什么样子的:

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

因此,您可以将其称为类似于
service.getItems(“active:true,min\u price:100”)

的简单word make方法。创建两个具有相同名称和不同参数的方法。检查我下面的源代码。(用科特林书写)

@GET(“myportal/news/{id}”)
fun getNewsList(@Path(“id”)id:String):调用
@获取(“myportal/news/{id}/{dateTime}”)
fun getNewsList(@Path(“id”)id:Long,@Path(“dateTime”)dateTime:String):调用

尝试传递null而不是空字符串。它正在为查询参数工作。对于路径参数,您的要求有点古怪。我认为使用单独的api调用是可以的。就像典型的重载java类一样methods@Beloo是的,但是如果你的API用户不止一个可选路径PARAMS,那么调用它变得非常困难,代码真的很难看。虽然它可以工作,但意味着要保持两个实现对我来说没有意义,也许你可以考虑SET@ URL。
service.getItems("/filter/active:true,min_price:100")
@GET("items/list/{filter}")
Observable<ResponseItems> getItems(@Path(value = "filter", encoded = true) String filter);
@GET("items/list/")
Observable<ResponseItems> getItems();

@GET("items/list/filter/{filter}")
Observable<ResponseItems> getItems(@Path(value = "filter") String filter);
@GET("myportal/news/{id}")
fun getNewsList(@Path("id") id: String): Call<NewsEntity>

@GET("myportal/news/{id}/{dateTime}")
fun getNewsList(@Path("id") id: Long, @Path("dateTime") dateTime: String): Call<NewsEntity>