首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JAX-RS具有相同路径的多个类

JAX-RS具有相同路径的多个类
EN

Stack Overflow用户
提问于 2012-08-24 01:43:57
回答 3查看 6.8K关注 0票数 12

使用JAX-RS,可以将多个类分配给单个路径吗?我正在尝试这样做:

代码语言:javascript
运行
复制
@Path("/foo")
public class GetHandler {
    @GET
    public Response handleGet() { ...
}

@Path("/foo")
public class PostHandler {
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public Response handlePost() { ...
}

这显然是不允许的,因为我得到了:

代码语言:javascript
运行
复制
com.sun.jersey.api.container.ContainerException: A root resource, class PostHandler, has a non-unique URI template /foo

我总是可以创建一个类来处理请求,然后委托给helper类。我希望有一种标准的方法来这样做。

EN

回答 3

Stack Overflow用户

发布于 2012-08-24 02:13:20

JAX-RS规范并不禁止这样的映射。例如,Resteasy JAX-RS实现允许这样做。该功能应该是特定于球衣的。

关于:

我总是可以创建一个类来处理请求,然后委托给助手类。我希望有一种标准的方法来这样做。

通常,您拥有与路径同名的资源类:

代码语言:javascript
运行
复制
@Path("/foo")
public class FooResource {
    @GET
    @Path("/{someFooId}")
    public Response handleGet() {
      ...
    }

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public Response handlePost() {
       ...
    }
}
票数 3
EN

Stack Overflow用户

发布于 2012-08-25 02:41:19

不能将多个资源映射到同一路径。我几天前就试过了,结果遇到了类似的错误。

我最终使用子路径,比如一个资源的/api/contact和另一个资源的/api/tag。

唯一的长方法是在多个包中创建资源,然后为每个包创建不同的应用程序。

票数 2
EN

Stack Overflow用户

发布于 2019-08-29 11:06:07

我遇到了类似的问题,将类级别的@PATH注释设置为空字符串,并将资源名称移动到方法级别的@PATH注释,解决了此问题。

代码语言:javascript
运行
复制
@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
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12097292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档