在Retrofit中@Query和@path有什么区别?

时间:2015-12-17 11:09:19

标签: android retrofit

我想通过传递一些参数来使用改造库来解析和发布数据。但是在定义模型类时,我们会在变量前面使用@Serialized,使用那个Serialized.And @Get和@Query在将params传递给API时有什么区别。可以解释其中的差异。

2 个答案:

答案 0 :(得分:6)

假设你有api方法@GET("/api/item/{id}/subitem/"),所以使用@Path("id")你可以在路径中指定项目的id。但是,您的api可能会在查询中使用其他参数,例如sort,lastupdatetime,limit等,因此您可以在@Query(value = "sort") String sortQuery

的末尾添加这些参数。

所以完整的方法看起来像:

@GET("/api/item/{id}/subitem")
SubItem getSubItem(@Path("id") int itemId, @Query("sort") String sortQuery, @Query("limit") int itemsLimit);

并且调用api.getSubItem(5, "name", 10)将生成网址@GET("/api/item/5/subitem/?sort=name&limit=10")

@Get是HTTP方法

http://www.w3schools.com/tags/ref_httpmethods.asp

  

客户端和客户端之间的请求 - 响应的两种常用方法   服务器是:GET和POST。

     

GET - 从指定资源请求数据POST - 将数据提交到   被处理到指定的资源

答案 1 :(得分:0)

@GET是请求方法。你用它标记方法。

@Query是查询参数(即URL中的参数)。用这个标记方法参数。

@Serialized可能不属于Retrofit,请查看其包名称(将光标移动到那里并在Android工作室中按“Ctrl + Q”)