改造2 @path Vs @query

Mwe*_*sco 55 java rest android retrofit2

我是新手来改造2个库.我读了几篇文章作为初学者入门,我设法从RESTful API中获取XML数据而不指定参数.在我的方法中生成XML资源如下.

@GET
@Path("/foods")
@Produces(MediaType.APPLICATION_XML)
public List<FoodPyramid> getFoodPyramid() {
    Session session = HibernateUtil.getSessionFactory().openSession();
    trans = session.beginTransaction();
    List<FoodPyramid> foodList = session.createQuery("from FoodPyramid").list();
    try {
        trans.commit();
        session.close();
    } catch (Exception e) {
        session.close();
        System.err.println("Food Pyramid fetch " + e);
    }
    System.err.println("Am in the food modal. . . . . . . .");
    return foodList;
}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试在界面中传递参数时

@GET("user/{username}/{password}")
Call<List<UserCredentail>> getUserOuth(@Query("username") String username, @Query("password") String password);  
Run Code Online (Sandbox Code Playgroud)

它无法运行,客户端没有收到任何数据.我花了一个星期试图通过使用非参数调用获取资源来修复它; 所以试着改变它

@GET("user/{username}/{password}")
Call<List<UserCredentail>> getUserOuth(@Path("username") String username, @Path("password") String password);  
Run Code Online (Sandbox Code Playgroud)

它工作得很好.所以我的问题是:我什么时候需要在改造2中使用@Query@Path注释?

Non*_*hoi 128

考虑这是网址:

www.app.net/api/searchtypes/862189/filters?Type=6&SearchText=School

现在这是电话:

@GET("/api/searchtypes/{Id}/filters")
Call<FilterResponse> getFilterList(
          @Path("Id") long customerId,
          @Query("Type") String responseType,
          @Query("SearchText") String searchText
);
Run Code Online (Sandbox Code Playgroud)

所以我们有:

www.app.net/api/searchtypes/ {Path}/filters?Type = {Query}&SearchText = {Query}

之后发生的事情通常是查询.


Nik*_*aul 20

例如:

@GET("/user/{username}?type={admin}")
Run Code Online (Sandbox Code Playgroud)

usernamepath变量,type是查询变量

@GET("/user/{username}?type={admin}")
void getUserOuth(@Path("username") String username, @Query("type") String type)
Run Code Online (Sandbox Code Playgroud)

  • 它不需要 **type** 而不是 **admin** 作为 _@Query_ 参数吗?如:`void getUserOuth(@Path("username") String username, @Query("type") String type)` (2认同)

can*_*ler 9

科特林答案

例如,从具有帖子 id 的列表中获取特定帖子:

@GET("Posts/{post_id}")
suspend fun getPost(@Path("post_id") postId: String): Response<Post>
Run Code Online (Sandbox Code Playgroud)

注意:在此示例中,Post 是我的数据模型类。


小智 5

@Query

  • 这个注解代表任何与网络请求一起发送的查询键值对

@Path

  • 这个注解意味着传递的参数将在端点路径中交换