问题标签 [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 回答
5927 浏览

java - Java:编译冲突:返回类型与 HATEOAS ResourceSupport.getId 不兼容

所以我有这个 HATEOAS 实体。

我的实体有一个 long 类型的 id,但 HATEOAS 的 ResourceSupport 要求 getId 返回一个链接。

实体有一个 Long id,因为 db 有一个 long id,并且它是一个持久化实体。如何使用 HATEOAS 实现这个实体?

0 投票
1 回答
374 浏览

spring - Spring HATEOAS:如何宣传资源服务?

我有 Spring HATEOAS 用于访问特定资源,例如

但我也希望能够宣传服务网址:

例如,如果您执行 GET / ,我想返回我宣传的服务资源。现在唯一的一个是/auth。

目前这没有编译,因为 linkTo 不接受 void 参数,我认为这是我的身份验证方法的返回类型

我想要的是:

在保持 HATEOAS 最佳实践的同时,我如何做到这一点?

0 投票
2 回答
8826 浏览

java - 如何在不使用 @EnableHypermediaSupport 和 spring hateoas 的情况下启用 HAL 渲染?

借助@EnableHypermediaSupport(type = HypermediaType.HAL)Spring,hateoas 提供了一种简单方便的方式来启用 HAL 渲染。

注释触发了一些配置魔法,这里解释: https ://github.com/spring-projects/spring-hateoas#enablehypermediasupport

但是,如果您正在开发一个给定的基于 xml-config 的 spring 应用程序,那么集成 @EnableHypermediaSupport 并不容易。我尝试了很多不同的方法来启用 HAL 渲染,但没有一个解决方案能正常工作:

  • 在现有的 mvc servlet xml 配置中包含一个配置类。
  • 使用不同版本的 spring hateos (0.70.0, 0.80.0, 0.9.0.BUILD-SNAPSHOT),希望 0.90.0 会产生开箱即用的 HAL,因为根据 jira 问题,它应该成为默认值渲染(至少对于弹簧数据休息)。
  • 使用自定义MappingJackson2HttpMessageConverter注册new Jackson2HalModule()也不起作用。尽管转换器用于渲染(例如渲染日期),但输出并未在 HAL 中渲染。

因此我的问题是:如何在不使用 EnableHypermediaSupport 的情况下启用 HAL 渲染?

我故意省略了任何代码片段,因为我认为这不会有太大帮助。

0 投票
1 回答
3164 浏览

json - 如何使用 Spring Hateoas 和 HAL 向链接添加附加属性?

我正在使用配置了 @EnableHypermediaSupport(type = HAL) 的 Spring Boot 和 Spring Hateoas。虽然这在基本场景中工作正常,但我希望能够向链接添加其他属性。例如,很容易返回将呈现如下链接的链接:

我想要做的是为 something rel 中的对象添加更多属性。例如:

在不创建自己的 DTO 的情况下,最好的方法是什么(最好使用 ControllerLinkBuilder)?我尝试创建自己的 Link 子类并为名称(以及 getter 和 setter)添加字段,但它们似乎被忽略了。

0 投票
3 回答
38190 浏览

spring - 如何正确使用 Spring Data 中的 PagedResourcesAssembler?

我正在使用 Spring 4.0.0.RELEASE、Spring Data Commons 1.7.0.M1、Spring Hateoas 0.8.0.RELEASE

我的资源是一个简单的 POJO:

我的资源组装器将 User 对象转换为 UserResource 对象:

在我的 UserController 中,我想Page<User>从我的服务中检索,然后将其转换为PagedResources<UserResource>using PagedResourcesAssembler,如下所示:https ://stackoverflow.com/a/16794740/1321564

这不会调用UserResourceAssembler,只是User返回的内容而不是我的 custom UserResource

返回单个资源有效:

PagedResourcesAssembler需要一些通用参数,但是我不能使用T toResource(T),因为我不想将我的转换为Page<User>PagedResources<User>特别是因为User它是 POJO 并且没有资源。

所以问题是:它是如何工作的?

编辑:

我的 WebMvcConfigurationSupport:

解决方案:

0 投票
1 回答
5864 浏览

java - Spring Hateoas @EnableEntityLinks 不提供 EntityLinks bean (NoSuchBeanDefinitionException)

我有一个使用 Spring HATEOAS 的 Spring Boot 应用程序,它已@EnableEntityLinks启用。该应用程序有一个包含字段的 mvc 控制器@Autowired EntityLinks entityLinks

我希望这@EnableEntityLinks会提供EntityLinksbean(根据:使用 Spring HATEOAS 公开和管理链接),但我得到了NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.hateoas.EntityLinks] found

该应用程序是一个测试应用程序,因此它非常小:

应用程序.java:

客户控制器:

客户.java

pom.xml

例外:

0 投票
1 回答
576 浏览

json - 生成的 JSON 具有不同的结构

我有一个 Web 应用程序,我在其中使用 Spring MVC 和带有 HypermediaType HAL 的 Spring Hateoas。在我的控制器中,我使用资源类来放入主题列表。问题是,如果我放入一个元素的列表,则生成的 json 的结构与我放入 2 个元素的结构不同。如果列表只包含一个元素,它将删除列表并将其作为单个对象返回。在两个 Controller 方法下方,我粘贴了生成的 Json。

我现在想知道,为什么会出现这样的行为以及如何强制 Hateoas 在生成的 json 中使用列表?

Hateoas 配置:

0 投票
1 回答
1067 浏览

spring - Spring Data Rest 和 Hateoas

我正在按照一个简单的教程来测试 Spring Data Rest 的行为,并使用 @RestResource 注释对存储库进行注释。我有一个非常简单的场景:Jpa User Entity and UserRepository annotated with @RestResource

我使用注释配置初始化并尝试注册 RepositoryRestMvcConfiguration,因此可以注册 UserRepository。但我的应用程序没有启动,我有以下异常

我使用 spring-hateoas: 0.8.0.RELEASE spring-data-rest-webmv: 2.0.0.RC1 spring-framework: 4.0.0.RELEASE spring-data-jpa:1.4.3

0 投票
0 回答
1252 浏览

java - 使用 Spring HATEOAS 进行部分响应的最佳实践

我正在编写一个多用户应用程序,其中对给定资源(例如/people/4)的请求将根据执行请求的用户返回不同级别的详细信息(例如,用户 4 或支持代表将看到整个资源,而其他用户将看不到某些字段,例如用户的电子邮件地址)。

Spring HATEOAS 对建链有彻底的支持,但是主ResourceAssember界面只提供了一个单独的适配器方法,它接受一个域对象并返回一个资源对象,没有提供额外的参数(例如当前的 Spring Security 用户),也ResourceSupport没有Resource<T>提供过滤返回的字段的工具。

我目前倾向于的方法是实现toResourceforResourceAssembler<Customer, CustomerResource>手动挖掘当前 Spring Security 凭据并在此时应用过滤,本质上是手写一个多阶段复制构造函数,它将添加公共字段,然后是 for-friends 字段,然后是资源对象的私有字段。

是否有更集成的,特别是声明性的方式来处理任务,或者这是现在可用的最佳解决方案?这种方法是否会与 Spring Data REST 控制器集成,或者如果我想自己处理程序集,我是否必须重新实现分页等等?

0 投票
1 回答
1223 浏览

spring-data-rest - 自 Spring Data REST 2.0.0.RC1 以来无法识别的字段“_links”

一方面,我刚刚将 spring-data-rest-webmc 的版本更新为我的服务器的最新 2.0.0.RC1 版本。在此版本中,json 格式更改为 HAL 格式。

另一方面,我有一个使用 0.9.0.RELEASE 版本的 spring-hateoas 库的客户端。在这个客户端中,我使用 RestTemplate 从我的服务器获取资源,如下所示:

AuthorResource 类扩展了 ResourceSupport。

现在,我有这个错误:

如何配置我的客户端以支持这种新格式?我试试

@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)

但它不起作用。

谢谢你的帮助。