我们正在开始一个新项目,我们正在研究使用 spring-hateoas / 超媒体。HAL 浏览器看起来也很有趣,所以我们想看看它。
但是,HAL 浏览器似乎与 spring-data-rest 捆绑在一起,我们不想使用它(出于不同的原因)。
至少我们不想将所有存储库自动公开为 rest-resources,但是这样做时,除了使用 spring-hateoas 定义链接之外,我们还需要明确定义 HAL 浏览器的链接。
当不自动公开存储库时,我们必须定义
implements ResourceProcessor<RepositoryLinksResource>
和
@Override
RepositoryLinksResource process(RepositoryLinksResource resource) {
resource.add(link('/{id}').withRel('my-dummy'))
return resource
}
除了已经定义的链接(使用 hatoas)
link('/{id}').expand(entity.id).withSelfRel()
这看起来很麻烦,而且不符合 DRY 原则。我们宁愿不实现 @Override 方法 RepositoryLinksResource 进程(RepositoryLinksResource 资源),因为这些链接已经在别处定义。
我最初的想法是 HAL 浏览器会重用已经用 hatoas 定义的链接。但是我没有正确理解它?
所以问题是
有没有办法在不使用 spring-data-rest 的情况下使用 spring-bundled HAL 浏览器?
并且在不自动公开存储库时不必为 HAL 浏览器显式手动定义链接?