【发布时间】:2017-03-14 14:42:55
【问题描述】:
我们正在启动一个新项目,并且正在研究使用 spring-hateoas / 超媒体。 HAL 浏览器看起来也很有趣,所以我们想看看。
但是,HAL 浏览器似乎与 spring-data-rest 捆绑在一起,我们不想使用它(出于不同的原因)。
至少我们不想将所有存储库自动公开为剩余资源,但是这样做时,除了定义链接之外,我们还需要明确定义 HAL 浏览器的链接 春天讨厌。
当不自动公开存储库时,我们必须定义
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 浏览器会重用已经用 hatoas 定义的链接。 但是我没有正确理解它?
所以问题是
有没有办法不使用spring-data-rest而使用spring-bundled HAL浏览器?
并且在不自动公开存储库时无需为 HAL 浏览器显式手动定义链接?
【问题讨论】:
-
“有没有办法不使用spring-data-rest而使用spring-bundled HAL浏览器” 是的。不是从春天来的。 Spring Data Rest 仅包含它。但我认为你误解了它的目的。顾名思义,它允许您浏览,而不是提供链接。
-
我明白了(可能原始描述不清楚)。问题是为什么 spring-data-rest 没有重用已经定义的链接,并迫使我覆盖 process 方法。
-
您能否详细说明“重新使用已经用 hatoas 定义的链接”?我也不明白您所说的_“将资源(控制器)暴露给 HAL 浏览器” 是什么意思。您不会仅为 HAL 浏览器创建链接。
-
第一件事。 1)我有资源。该资源具有链接(使用 spring-hateoas 类创建)。到目前为止,一切都很好。但是,与 spring-data-rest 捆绑的 HAL 浏览器不会接收这些链接。我认为 spring-data-rest 捆绑的 hal 浏览器会使用这些链接。它没有。
-
2) 我可以删除这条评论,这是一位开发者的初步评论,我可以看到混乱
标签: spring-data-rest spring-hateoas hal-json