改造 2 @path vs @query

2022-08-31 10:54:07

我是改造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;
}

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

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

它无法运行,客户端没有收到任何数据。我花了一个星期的时间试图修复它,尽管通过使用非参数调用获取资源;所以试图把它改成:

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

它工作正常。所以我的问题是:什么时候需要在改造2中使用和注释?@Query@Path


答案 1

考虑这是网址:

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
);

所以我们有:

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

在 ? 之后的内容通常是查询。


答案 2

例如:

@GET("/user/{username}?type={admin}")

下面是变量,并且是查询变量usernamepathtype

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

推荐