如何使用"模板化建立HAL链接:true"使用Spring-hateoas?

时间:2014-04-12 15:23:11

标签: hateoas spring-hateoas hal-json

我正在尝试弄清楚如何使用templated: true构建HAL链接。如果我使用

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

仍然会对{}个字符进行编码。知道如何通过其API将Spring-hateo的模板URL链接建立为0.10.0.RELEASE吗?

感谢。

2 个答案:

答案 0 :(得分:3)

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

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

虽然解决方法并不是特别好,但我的团队还没有找到任何通过API将模板化参数传递到LinkBuilders的方法,而不会造成问题。

答案 1 :(得分:1)

要获得链接中的括号,我最终得到了一些有点狡猾的解决方案,但作为一种时间解决方法可行:

  • 创建课程:
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"))
相关问题