Web services @类级和方法级的路径配置
我正在REST类中使用Web services @类级和方法级的路径配置,web-services,http,rest,jersey,jax-rs,Web Services,Http,Rest,Jersey,Jax Rs,我正在REST类中使用javax.ws.rs.Path类来配置路径。它的行为很奇怪。。。我的配置是这样的。。。这不是实际的文件,但我展示了一个复制,以使您了解我的配置 第一类 @Path("/v2") public class BoxResource { @POST @Path("/ie/box") public Response createbox(...) { ... } } 类别2 @Path("/v2/ie") public class
javax.ws.rs.Path
类来配置路径。它的行为很奇怪。。。我的配置是这样的。。。这不是实际的文件,但我展示了一个复制,以使您了解我的配置
第一类
@Path("/v2")
public class BoxResource {
@POST
@Path("/ie/box")
public Response createbox(...) {
...
}
}
类别2
@Path("/v2/ie")
public class BagResource {
@POST
@Path("/bag")
public Response createbag(...) {
...
}
}
当我发出类似/v2/ie/box
的HTTP请求时,它会抛出服务器配置错误。但是,如果我像下面这样改变我的第2类,它工作得很好
@Path("/v2/ie/bag")
public class BagResource {
@POST
public Response createbag(...) {
}
}
为什么是这样。。@path在类级别和方法级别的配置是否不同?对
/v2/ie/box
的请求映射到Class2
,因为它具有
@Path("/v2/ie")
作为类注释
在这种情况下,最长的路径
获胜Class1
从未被查看过,因为它具有较短的类注释@Path(“/v2”)
由于Class2
没有映射到剩余/box
的方法,您将得到一个404未找到
建议
@Path
注释:@Path(“/v2/ie/bag”)
和@Path(/v2/ie/box”)
或@Path(“/v2/ie”)
,方法注释为@Path(“/bag”)
和@Path(“/box”)
另请参见。的“3.7将请求匹配到资源方法”一节。在对这两个类进行更改后,我对它们都进行了类级路径(“/v2”),即使这样也会引发相同的错误。请阅读我在回答中链接的规范。请在您的问题中添加您的真实代码。我不理解规范。。。在我的box类中还有其他方法,其路径类似于/v2/ow/。。所以不能制造一个资源。。也很抱歉,可能会添加真实代码。。如果您需要信息,我可以提供您推荐的选项2,但在我的方案中不可能。。选项1不起作用。。它仍然抛出配置错误