使用JAX-RS,可以将多个类分配给单个路径吗?我正在尝试这样做:
@Path("/foo")
public class GetHandler {
@GET
public Response handleGet() { ...
}
@Path("/foo")
public class PostHandler {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response handlePost() { ...
}
这显然是不允许的,因为我得到了:
com.sun.jersey.api.container.ContainerException: A root resource, class PostHandler, has a non-unique URI template /foo
我总是可以创建一个类来处理请求,然后委托给helper类。我希望有一种标准的方法来这样做。
发布于 2012-08-24 02:13:20
JAX-RS规范并不禁止这样的映射。例如,Resteasy JAX-RS实现允许这样做。该功能应该是特定于球衣的。
关于:
我总是可以创建一个类来处理请求,然后委托给助手类。我希望有一种标准的方法来这样做。
通常,您拥有与路径同名的资源类:
@Path("/foo")
public class FooResource {
@GET
@Path("/{someFooId}")
public Response handleGet() {
...
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response handlePost() {
...
}
}
发布于 2012-08-25 02:41:19
不能将多个资源映射到同一路径。我几天前就试过了,结果遇到了类似的错误。
我最终使用子路径,比如一个资源的/api/contact和另一个资源的/api/tag。
唯一的长方法是在多个包中创建资源,然后为每个包创建不同的应用程序。
发布于 2019-08-29 11:06:07
我遇到了类似的问题,将类级别的@PATH注释设置为空字符串,并将资源名称移动到方法级别的@PATH注释,解决了此问题。
@Path("")
public class GetHandler {
@GET
@Path("/foo")
public Response handleGet() {
// impl
}
}
@Path("")
public class PostHandler {
@POST
@Path("/foo")
@Consumes(MediaType.APPLICATION_JSON)
public Response handlePost() {
// impl
}
}
https://stackoverflow.com/questions/12097292
复制相似问题