改造 2 @path 与 @query

新手上路,请多包涵

我是 retrofit 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);

它工作正常。所以我的问题是:我什么时候需要使用 @Query@Path Annotation in retrofit 2?

原文由 Mwesigye John Bosco 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 550
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}

之后的事情 通常是查询。

原文由 Nongthonbam Tonthoi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题