我对android非常陌生,我正在研究Retrofit 2的联网功能,以发送为什么我们使用查询参数的Get?
发布于 2019-01-31 06:42:53
不需要发送带有GET请求的查询参数。这与在您试图使用的API上如何配置端点有关。
在设计API时,特别是GET方法时,可以通过将某些参数指定为查询参数来保持它们的可选性。
@GET("location")响应getUser(@QueryParam("name")字符串名称);
双方都可以调用
/location
/location?name=test
查询参数不仅仅限于获取请求。它也可以与其他方法一起使用,例如删除等。
这是一个与HTTP方法相关的概念
发布于 2019-01-31 06:21:44
更新使用注释将定义的键和值转换为适当的格式。使用@ query (" key ")字符串值注释将向请求url添加一个具有名称键和相应的字符串值的查询参数(当然,您可以使用String :以外的其他类型)。
实际上,有一些带有端点的API允许您传递(可选)多个查询参数。您希望避免像下面这样的服务方法声明,为请求参数提供“无止境”选项:
public interface NewsService() {
@GET("/news")
Call<List<News>> getNews(
@Query("page") int page,
@Query("order") String order,
@Query("author") String author,
@Query("published_at") Date date,
…
);
}
您可以为每个参数调用带有空值的.getNews服务方法,使它们成为可选的。修改将忽略空值,而不将其映射为查询参数。但是,有一个更好的解决方案可以使用具有各种查询参数选项的复杂API端点。别担心,Retrofit给你盖好了!
您可以从以下提供的链接中了解更多内容:
https://futurestud.io/tutorials/retrofit-2-add-multiple-query-parameter-with-querymap
发布于 2019-01-31 06:38:16
假设您需要调用以下api:key=1
因此,要动态传递"api_key“的值,应该使用@Query("api_key")作为:
@GET("movie/now_playing")
Call<MovieData> getMovieData(@Query("api_key") String apiKey);
https://stackoverflow.com/questions/54454347
复制相似问题