Jax-RS Response.created(location)用于具有路径参数的路由

时间:2018-10-12 06:53:31

标签: java jax-rs

我有一条REST路由来创建使用路径参数的资源。

此处给出的答案: https://stackoverflow.com/a/26094619/2436002 显示了如何使用UriInfo上下文轻松地为响应创建适当的位置标头。

document.querySelector('#reward-button').addEventListener('click', getReward);

但是,这会在接收到的URI中包含路径参数,这将不会导致获得正确的资源。

POST:http://localhost/api/resource/ {type},其pathparam type =“ system”

将返回http://localhost/api/resource/system/123(生成的ID为123) 而正确的URI是 http://localhost/api/resource/123

那么,如何获得正确的资源位置以返回?

1 个答案:

答案 0 :(得分:1)

是的,按照链接中的方式进行操作,假设您有一个父子关系,您将在其中发布到集合终结点并创建一个子资源。对于您的用例,情况并非如此。使它起作用的一种方法是仅使用UriBuilder.fromResource()。然后只需调用resolveTemplate()来输入"type"的值。

URI createdUri = UriBuilder.fromResource(Resource.class)
       .resolveTemplate("type", createdUUID.toString()).build();
return Response.created(uri).build();

这会给你http://localhost/api/resource/123

相关问题