我有两种泽西方法,看起来像这样
@GET
@Path("/mine")
@Produces(MediaType.APPLICATION_JSON)
List<MyStuff> getAllMyStuff();
@GET
@Path("/{id}")
@Produces(MediaType.APPLICATION_JSON)
MyStuff getMyStuff(@PathParam("id"));
在这种情况下,我可以请求/ mine和'getAllMyStuff',或者请求/ 123并获取正确的单个内容。但是,我想在“我的”路径上使用一些可选的查询参数,这样做似乎会使球衣循环。当我将“我的”更改为
@GET
@Path("/mine")
@Produces(MediaType.APPLICATION_JSON)
List<MyStuff> getAllMyStuff(@QueryParam("offset") int offset, @QueryParam("limit") int limit);
调用'/ mine'最终被映射到ID为'mine'的'getMyStuff'方法。
对于我来说,似乎很奇怪,仅列出这些查询参数会像这样影响映射。有什么办法可以解决它?
最佳答案
事实证明,问题实际上与我在接口和实现中声明批注的方式有关。
我有一个接口,方法如下:
@GET
@Path("/mine")
@Produces(MediaType.APPLICATION_JSON)
List<MyStuff> getAllMyStuff(@QueryParam("offset") int offset, @QueryParam("limit") int limit);
和类似的实现
列出getAllMyStuff(@QueryParam(“ offset”)int偏移量,
@QueryParam(“ limit”)int limit);
显然,在实现方法上包含任何Jersey注释最终都会否定从接口“继承”的注释。只需将我的实现更改为
List getAllMyStuff(int offset, int limit);
解决了这个问题。谢谢您的帮助!