java – 查找Jersey Parent Path

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

例如.如果用户发布到:

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

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

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

似乎应该有一种直接的方式来使用UriInfo / UriBuilder来做到这一点,但我不知道如何在没有硬编码的情况下做到这一点,这可能会在以后破坏.

解决方法:

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();
    }
}
上一篇:java – Moxy无法将L​​ist编组为JSON


下一篇:java – 如何使用Jetty为Angular应用程序提供服务,还可以使用与Jersey相同的服务器?