0

我们正在开始一个新项目,我们正在研究使用 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 浏览器显式手动定义链接?

4

1 回答 1

3

Spring提供的HAL浏览器没有spring-data-rest是无法使用的。

我有类似的需求,并考虑了以下选项...

  1. 将 Spring HAL 浏览器打包到一个单独的项目中(托管在不同的端口上),并使用 @CrossOrigin 标记您的原始项目。
  2. 打包通用 HAL 浏览器。

我没有尝试第一种方法,所以不知道您是否会遇到任何其他问题。

第二种方法是通过下载 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)。

于 2017-12-04T07:36:31.250 回答