问题标签 [spring-hateoas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3493 浏览

spring - 将 Spring HATEOAS 链接转换为对象的正确方法

我有一个非常简单的控制器,它发出 HTTP 请求并以 HATEOAS 格式接收一些资源。

是否存在将链接转换为对象的现有首选或标准方法?

有关 EmployeeDTO 的详细信息,请参见此处:https ://gist.github.com/Xerosigma/64469a30355f5de0228a

0 投票
3 回答
1962 浏览

spring - Spring HATEOAS Resource assembler 未在单元测试中实例化

我正在尝试为 REST 控制器编写一个单元测试,该控制器通过 Resource assembler 类生成 HATEOAS 链接。生产中一切正常,但是单元测试资源汇编程序类没有被注入控制器。

我的资源汇编类是:

控制器是:

和单元测试:

无论我做什么,ModelResourceAssembler 实例始终为空。由于应用程序是 Spring Boot,它没有 WebCoonfig 类,并且自动装配的 WebApplicationContext 始终为空,所以我不能(并且真的不想,因为我正在运行单元测试)通过 webAppContextSetup 实例化 MockMvc

0 投票
8 回答
52180 浏览

java - Spring HATEOAS 嵌入式资源支持

我想为我的 REST API 使用 HAL 格式来包含嵌入式资源。我将 Spring HATEOAS 用于我的 API,而 Spring HATEOAS 似乎支持嵌入式资源;但是,没有关于如何使用它的文档或示例。

有人可以提供一个示例如何使用 Spring HATEOAS 来包含嵌入式资源吗?

0 投票
4 回答
1138 浏览

java - 在 Spring 中生成一致的资源链接

使用这行代码生成链接时:

生成此 JSON:

但是,Spring Data Rest 生成的资源链接会生成以下 JSON:

特别是,我想模仿 Spring Data Rest 制作的那个。我该怎么做?

我正在使用具有以下配置的 Spring Boot:

保留或删除@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)似乎并没有改变任何东西。

我还有以下 gradle 依赖项:

0 投票
3 回答
12659 浏览

spring - Spring Data REST 自定义查询集成

我想为一个Employee基本上是findByAllFields查询的实体创建一个 REST 链接。当然,这应该与Pageand结合使用Sort。为此,我实现了以下代码:

所以我想让我们说一个我可以做的查询:

所以我有以下Repository

好的,现在我需要一个 RestController

好的,显然这可以完成它的工作,但它没有与 HATEOAS 集成。我试图组装一个资源,将控制器更改为:

显然我从上面遗漏了一些东西,因为它不起作用并且我得到以下异常:

好的,为了让问题更清楚,我正在尝试将上述资源集成到 HATEOAS 架构的其余部分中。我不完全确定这是否是正确的方法,所以欢迎任何其他建议。

编辑:在这里你可以看到一个类似的实现。请看一下配置,你会看到除了一个“Person”控制器之外的所有控制器都在工作。 https://github.com/cgeo7/spring-rest-example

0 投票
0 回答
1977 浏览

java - Spring Data Rest - PagedResourceAssembler 异常

我有以下配置文件:

还有我的 Rest 配置类

这是我的控制器

最后我正在使用的库:

通过公开 aRepositoryRestMvcConfiguration我应该配置所有内容。但是,在尝试访问资源时出现以下异常:

我已经尝试过我的Transmission实体扩展ResourceSupport和不扩展,但它似乎没有任何区别。

任何想法我做错了什么?

0 投票
2 回答
3056 浏览

spring - Spring Data REST资源如何全局自定义集合资源rel和path?

基于示例项目 https://github.com/jcoig/gs-accessing-data-rest 中的https://spring.io/guides/gs/accessing-data-rest/ 我的存储库定义如下:

此类定义的存储库可通过http://localhost:8080/persons以下方式获得,响应为:

我不想persons在 URL中有,也不想persons在返回的 JSON 中作为键。当然,我可以如下定义我的存储库:

但我的问题是如何更改默认 Spring 的行为并获得自定义键和自定义路径提供程序(就像禁用s后缀的示例)。

0 投票
1 回答
4193 浏览

java - Spring RestTemplate:GET 请求导致 400 Bad Request

我正在尝试为以下 URL 创建客户端:http: //florist.herokuapp.com/products/1/categories

应用程序.java

分类列表.java

类别.java

抛出的错误是:

要在服务器上生成 JSON,我使用 RepositoryRestResource 注释:

0 投票
3 回答
3495 浏览

spring - 如何控制 Spring Hateoas 生成链接的 web 上下文?

我们正在构建一个 API 并使用Spring RestControllers 和Spring HATEOAS.
当 war 文件被部署到一个容器并且一个 GET 请求被发送到http://localhost:8080/placesapi-packaged-war-1.0.0-SNAPSHOT/places时,HATEOAS 链接看起来像这样:

因为 Web 上下文是已部署应用程序的上下文(例如placesapi-packaged-war-1.0.0-SNAPSHOT:)

在真实的运行时环境(UAT 及更高版本)中,容器很可能位于 http 服务器后面,例如Apache虚拟主机或类似服务器位于 Web 应用程序前面的位置。像这样的东西:

使用上述方法,当我们向 发出 GET 请求时http://nathans-macbook-pro.local/places,结果响应如下所示:

这是错误的,因为响应中的链接包含 Web 应用程序上下文,并且如果客户端要遵循该链接,他们将得到 404

有谁知道如何控制Spring HATEOAS这方面的行为?基本上我需要能够控制它在链接中生成的网络上下文名称。

我做了一些探索,可以看到使用自定义标头X-Forwarded-Host可以控制主机和端口,但我看不到任何类似的东西能够控制上下文。

我们考虑的其他选项包括将应用程序部署到 ROOT 上下文或固定命名上下文,然后相应地设置我们的虚拟主机。然而,这些感觉像是妥协而不是解决方案,因为理想情况下我们希望在同一个容器上托管多个版本的应用程序(例如:placesapi-packaged-war-1.0.0-RELEASE、placesapi-packaged-war-1.0.1- RELEASE、placesapi-packaged-war-2.0.0-RELEASE 等)并让虚拟主机根据 http 请求标头转发到正确的应用程序。

对此的任何想法将不胜感激,
干杯

弥敦道

0 投票
2 回答
782 浏览

java - Spring HATEOAS,在 WS 响应中嵌入链接对象

我正在使用 Spring Boot 和 Spring HATEOAS 构建 REST API。

我有 2 个简单的对象。比方说:

这个简单的项目创建如下输出:

很好,但我希望应用程序直接在响应中发送地址对象。为了不必查询地址的URL。

就像是:

是否有任何配置可以做到这一点?我在 Spring HATEOAS 文档中找不到任何关于它的配置。这是仅使用常规 Spring 控制器时的默认行为。