我正在尝试弄清楚如何使用templated: true
构建HAL链接。如果我使用
BasicLinkBuilder.linkToCurrentMapping().slash("api/public/blogs/{blog}").withRel("blog");
仍然会对{
和}
个字符进行编码。知道如何通过其API将Spring-hateo的模板URL链接建立为0.10.0.RELEASE
吗?
感谢。
答案 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"))