找到泽西父路径

时间:2015-05-25 21:40:58

标签: java jersey jax-rs

我有一个Jersey 2.x端点,用户可以POST来更新父资源上的特定属性。成功之后,我想返回303状态,并在Location标题中指定父资源的路径。

例如。如果用户发布到:

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

然后在响应中设置位置标题:

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

使用UriInfo / UriBuilder似乎应该有一种直截了当的方法来做到这一点,但我不知道怎么做而不用硬编码可能会破坏的东西以后。

1 个答案:

答案 0 :(得分:4)

UriInfo.getBaseUriBuilder()获取基本URI(假设为http://example.com/api),然后使用builder.path(XxxResource.class)附加XxxResource路径。

然后从构建的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();
    }
}