我试图弄清楚如何使用templated: true
. 如果我使用
BasicLinkBuilder.linkToCurrentMapping().slash("api/public/blogs/{blog}").withRel("blog");
和字符仍然被编码{
。知道如何通过其 API}
使用 Spring-hateo 构建模板 URL 链接吗?0.10.0.RELEASE
谢谢。
我试图弄清楚如何使用templated: true
. 如果我使用
BasicLinkBuilder.linkToCurrentMapping().slash("api/public/blogs/{blog}").withRel("blog");
和字符仍然被编码{
。知道如何通过其 API}
使用 Spring-hateo 构建模板 URL 链接吗?0.10.0.RELEASE
谢谢。
我也想知道这是如何使用 HATEOAS API 来完成的。现在我们已经通过使用 BasicLinkBuilder 和 ControllerLinkBuilder 类生成 Link 对象,然后将模板化查询参数附加到new Link(String href)
构造函数中来解决它。有趣的是,这会建立一个带有templated: true
属性的链接。
我们注意到,尝试将值传递{blog}
到 LinkBuilder 类中会导致这些值试图从当前请求的值中替换(即链接构建器试图?blog=value
从当前请求中查找并替换value
到正在构建的链接中,并且作为这不存在导致异常。
虽然解决方法不是特别好,但我的团队无法找到任何方法通过 API 将模板化参数导入 LinkBuilders 而不会导致问题。
为了在链接中获得括号,我最终得到了一些 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"))