我在我的REST类中使用
javax.ws.rs.Path类来配置路径.它表现得很奇怪…我的配置是这样的……这不是实际的文件,但我已经展示了一个复制,让你了解我的配置.
1类
@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请求时,它会抛出服务器配置错误.但如果我改变我的Class2如下,它工作正常.
@Path("/v2/ie/bag") public class BagResource { @POST public Response createbag(...) { } }
为什么这样..在类级别和方法级别的@path配置是否有所不同?
解决方法
对/ v2 / ie / Box的请求被映射到Class2,因为它有
@Path("/v2/ie")
作为类注释.
在这种情况下,最长的路径获胜.从未看过Class1,因为它具有较短的类注释@Path(“/ v2”).
由于Class2没有映射到剩余/框的方法,因此您将获得404 Not Found.
建议
>仅对方法使用@Path注释:@Path(“/ v2 / ie / bag”)和@Path(“/ v2 / ie / Box”)或
>使用一个带有@Path(“/ v2 / ie”)类注释的资源类和@Path(“/ bag”)和@Path(“/ Box”)的方法注释.
编辑
另请参见the JAX-RS 2.0 spec的“3.7匹配资源方法请求”部分.