【问题标题】:jax-rs Link builder is ignoring base uri, want to create absolute linkjax-rs 链接构建器忽略基本 uri,想要创建绝对链接
【发布时间】:2015-06-19 08:40:50
【问题描述】:

我正在尝试将链接添加到我的 jax-rs 响应标头:

Link.fromMethod(UserResource.class, "delete")
        .baseUri(getUriInfo().getBaseUri()).rel("delete").build(id);

虽然我在每个调试器中看到并记录 getUriInfo().getBaseUri() 返回正确的 uri,但生成的链接只有 /1(对于 id=1)。

使用 UriBuilder 可以正常工作!

URI build = getUriInfo().getBaseUriBuilder().path(UserResource.class, "delete").build(id);
Link.fromUri(build).rel("delete").build();

getUriInfo 只是从注入@Context 的基类返回uriInfo。

那么如何让它与 Link 一起工作(它应该可以工作,不是吗)?

【问题讨论】:

  • 我目前正在研究同样的事情,查看 Link 的源代码(在我的情况下由 Resteasy 提供)我看到 baseUri 除了 buildRelativized() 方法之外没有在任何地方使用,它仅使用它来剥离它并返回一个相对 uri。看来我们在这里运气不好,尽管您使用 UriBuilder 的第二个 sn-p 并不是那么难看。

标签: hyperlink jax-rs hateoas


【解决方案1】:

这对我有用:

UriBuilder uriBuilder = uriInfo.getAbsolutePathBuilder();
UriBuilder clone = uriBuilder.clone();
clone.path("xxx");
Link link = Link.fromUriBuilder(clone).rel("self").type("GET").build();

克隆是因为我重新使用了构建器

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 2015-10-30
    相关资源
    最近更新 更多