2012-08-23 19 views
9

使用JAX-RS,是否可以将多个类分配到单个路径?我试图做这样的事情:具有相同路径的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 

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

回答

2

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

关于:

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

通常你的资源类具有相同的名称作为路径:

@Path("/foo") 
public class FooResource { 
    @GET 
    @Path("/{someFooId}") 
    public Response handleGet() { 
     ... 
    } 

    @POST 
    @Consumes(MediaType.APPLICATION_JSON) 
    public Response handlePost() { 
     ... 
    } 
} 
2

你不能有映射到相同的路径多个资源。我几天前尝试过,发现类似的错误。

我结束了做一个资源的/ api/contacts和另一个资源的/ api /标签的子路径。

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

相关问题