6

我试图弄清楚如何使用templated: true. 如果我使用

BasicLinkBuilder.linkToCurrentMapping().slash("api/public/blogs/{blog}").withRel("blog");

和字符仍然被编码{。知道如何通过其 API}使用 Spring-hateo 构建模板 URL 链接吗?0.10.0.RELEASE

谢谢。

4

2 回答 2

3

我也想知道这是如何使用 HATEOAS API 来完成的。现在我们已经通过使用 BasicLinkBuilder 和 ControllerLinkBuilder 类生成 Link 对象,然后将模板化查询参数附加到new Link(String href)构造函数中来解决它。有趣的是,这会建立一个带有templated: true属性的链接。

我们注意到,尝试将值传递{blog}到 LinkBuilder 类中会导致这些值试图从当前请求的值中替换(即链接构建器试图?blog=value从当前请求中查找并替换value到正在构建的链接中,并且作为这不存在导致异常。

虽然解决方法不是特别好,但我的团队无法找到任何方法通过 API 将模板化参数导入 LinkBuilders 而不会导致问题。

于 2014-05-22T15:36:04.447 回答
1

为了在链接中获得括号,我最终得到了一些 hacky 解决方案,但作为一种临时解决方法有效:

  • 创建类:
public class BracketsLink extends Link {
    public BracketsLink(Link link) {
        super(link.getHref().replaceAll("%7B", "{").replaceAll("%7D", "}"), link.getRel());
    }
}
  • BracketsLink并使用类创建链接:
new BracketsLink(linkTo(methodOn(MessageController.class).message("{id}")).withRel("message"))
于 2015-01-12T08:50:44.527 回答