2015-05-25 114 views
3

我有一個澤西島2.x端點,用戶可以POST以更新父資源上的特定屬性。成功時,我想返回303狀態並在Location標題中指定父資源的路徑。查找澤西父路徑

例如。如果用戶發佈到:

http://example.com/api/v1/resource/field 

然後設置位置標頭在應對:

http://example.com/api/v1/resource 

好像有應與UriInfo/UriBuilder這樣做一個簡單的方法,但我不知道如何做到這一點,而不需要對以後可能會中斷的事情進行硬編碼。

回答

3

UriInfo.getBaseUriBuilder()獲取基本URI(假設爲http://example.com/api),然後將XxxResource路徑附加到builder.path(XxxResource.class)

然後從內置的URI返回Response.seeOther(uri).build();。完整示例:

@Path("/v1/resource") 
public class Resource { 

    @GET 
    public Response getResource() { 
     return Response.ok("Hello Redirects!").build(); 
    } 

    @POST 
    @Path("/field") 
    public Response getResource(@Context UriInfo uriInfo) { 
     UriBuilder uriBuilder = uriInfo.getBaseUriBuilder(); 
     uriBuilder.path(Resource.class); 
     URI resourceBaseUri = uriBuilder.build(); 
     return Response.seeOther(resourceBaseUri).build(); 
    } 
} 
+0

謝謝!我試圖使用路徑(Resource.class,「methodName」)來獲取資源上特定方法的路徑,但我想只會返回相對於包含資源的方法。加入路徑(Resource.class)讓我得到了我需要的東西。 –