我在我的 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")
作为类注解。
在这种情况下,最长的 Path
获胜。 Class1
从未被查看,因为它具有较短的类注释 @Path("/v2")
。
由于 Class2
没有映射到剩余 /box
的方法,您将得到一个 404 Not Found
。
推荐
- 在方法上仅使用
@Path
注解:@Path("/v2/ie/bag")
和@路径("/v2/ie/box")
或 - 使用一个资源类,类注解为
@Path("/v2/ie")
,方法注解为@Path("/bag")
和@Path("/box")
。
编辑
另请参阅 the JAX-RS 2.0 spec 的“3.7 将请求与资源方法匹配”部分.
关于web-services - 类级别和方法级别的@Path配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17471310/