我们正在开始一个新项目,我们正在研究使用spring-hateoas / hypermedia。 HAL浏览器看起来也很有趣,所以我们想查看它。
然而,HAL浏览器似乎捆绑到spring-data-rest,我们不想使用它(出于不同的原因)。
至少我们不想将所有存储库自动公开为rest-resources,但是在执行此操作时,我们需要明确定义HAL浏览器的链接以及定义链接 弹簧HATEOAS。
当不自动公开存储库时,我们必须定义
implements ResourceProcessor<RepositoryLinksResource>
和
@Override
RepositoryLinksResource process(RepositoryLinksResource resource) {
resource.add(link('/{id}').withRel('my-dummy'))
return resource
}
除已定义的链接(使用hateoas)
link('/{id}').expand(entity.id).withSelfRel()
这似乎很麻烦,并且不符合DRY原则。 我们宁愿不实现@Override方法RepositoryLinksResource进程(RepositoryLinksResource资源),因为这些链接已在其他地方定义。
我最初的想法是HAL浏览器会重新使用已经用hateoas定义的链接。 但是我觉得我没理解它?
所以问题是
有没有办法在不使用spring-data-rest的情况下使用弹簧捆绑的HAL浏览器?
在不自动公开存储库的情况下,无需为HAL浏览器明确手动定义链接?
答案 0 :(得分:2)
Spring提供的HAL浏览器不能在没有spring-data-rest的情况下使用。
我有类似的需求,并考虑过以下选项......
我没有尝试第一种方法,所以不知道你是否会遇到任何其他问题。
第二种方法是通过下载HAL浏览器(https://github.com/mikekelly/hal-browser)并将其添加到Spring Boot项目文件夹src / resources / public(https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot)来完成的。