2012-08-23 20 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 /標籤的子路徑。

唯一的另一個長途是在多個包中創建資源,然後爲每個包創建不同的應用程序。

相關問題