问题标签 [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.
spring - Spring Data REST (SDR):为链接构建公开存储库或 JaxRS
我是 SDR 和 Spring HATEOAS 工具的初学者。
Spring Data REST 采用 Spring HATEOAS 和 Spring Data Neo4j 的特性,并自动将它们组合在一起。
我的存储库是:
我可以看到 HATEOAS 中有两个类可用于构建链接,例如:
ControllerLinkBuilder
和JaxRsLinkBuilder
如果我们通过大部分教程,甚至 Spring 入门指南,它显示了控制器的示例。据我所知,两者都代表两个不同的东西,即分别创建与控制器和 JAX-RS 服务的链接。但是,当我尝试在我的 REST 服务中构建链接时:
通过它们中的任何一个(即ControllerLinkBuilder
或JaxRsLinkBuilder
)它总是抛出异常:
但是当我尝试手动添加它们时:
/amg-web/sdr/
Servlet 映射到哪里RepositoryRestDispatcherServlet
并且它没有任何故障地工作......具有以下输出作为application/hal+json
响应类型:
所以**LinkBuilder..一定有问题。
我的问题是:
- 如何创建指向控制器或 JAX-RS 服务甚至公开存储库的链接(使用 Spring Data REST 或 Spring HATEOAS)!?
- 如果 fetch 请求中有不止一种类型的 JSON 数据,并且需要很多链接,我们是否需要像上面那样在 ad-hoc 基础上创建链接,或者有没有办法自动生成它?
- 将存储库暴露为 REST 服务是否有任何安全问题?
谢谢 !!
spring-boot - 返回资源时的Spring HATEOAS(w Spring Boot)JAXB编组错误或分页资源结果
我的控制器中有这样的东西:
如果我导航到映射到该控制器方法的 URL,我会收到 500 错误,其根本原因是:
如果我在我的资源上抛出一个 @XmlRootElement 注释,它会变成这个错误:
如果接受标头是 application/json 或 application/hal+json,一切都很好。仅当客户端(在本例中为 chrome)正在寻找 application/xml 时才会出现问题(这很有意义,因为 HATEOAS 正在遵循客户端请求。我正在使用 spring boot 的 @EnableAutoConfiguration 将 XML 消息转换器添加到列表中从而启用 XML 内容类型。
我猜我至少有 2 个选项:1. 修复 jaxb 错误 2. 删除 xml 作为支持的内容类型
不知道该怎么做,或者也许还有另一种选择。
spring - Spring Data Rest 与 Spring HATEOAS 的集成
到目前为止,我从各种文件和 tuts 中获得并学到了以下几点:
Spring Data Rest (SDR) 用于将我们的 Spring Data Repository 公开为 REST 服务,以便人们可以使用它进行自我探索,而无需手动创建 JAXRS。它仅适用于 Repository 层,除了使用
RepositoryRestMvcConfiguration
. 它在内部某处使用 Spring HATEOAS。Spring HATEOAS 用于在我们通过 Controller 或 REST 端点返回的实体中创建链接。我们必须
ResourceSupport
扩展我们的实体或Resource
包装类来包装我们的实体以创建或添加链接。有几个注解和类可以使用,例如@EnableHyperediaSupport
和EntityLinks
。
可能有些点我还没有探索或了解,但我只是好奇我们如何将 SDR 结合到 HATEOAS 链接构建过程中?比如说。
所以,我只是想将我暴露的REST存储库包含到手动 HATEOAS 链接构建过程中.. 可以这样做吗?
spring-data-rest - 从弹簧数据休息中删除 HATEOS?
是否可以从弹簧数据休息中删除 HATEOS?
我想做的只是从 spring 中检索纯 JSON,因为我还需要从嵌套类中获取值。
spring - Customizing HATEOAS link generation for entities with composite ids
I have configured a RepositoryRestResource
on a PageAndSortingRepository
that accesses an Entity that includes a composite Id:
When i access the server at "http://<server>/api/customers/1_1"
for instance, I get the correct resource back as json, but the href in the _links section for self is the wrong and also the same for any other customer i query: "http://<server>/api/customer/1"
i.e.:
I suppose this is because of my composite Id, But I am chuffed as to how i can change this default behaviour.
I've had a look at the ResourceSupport
and the ResourceProcessor
class but am not sure how much i need to change in order fix this issue.
Can someone who knows spring lend me a hand?
spring-hateoas - Spring HATEOAS 模板链接扩展
使用很棒的 HATEOAS 链接功能,我正在尝试输出模板化的 url 以突出显示用户可用的过滤器参数
示例控制器方法
当不带参数调用此方法时,会出现链接
但我愿意
如果提供一个参数就更好了
锦上添花是要忽略 {...] 的查询参数吗?
有谁知道这是否可以使用 Spring HATEOAS api ?我已经设法解决了这个问题,但这似乎是对 API 的合理建议?
spring - 如何修复此 REST 服务以避免路径不明确?
我正在使用 spring hatoas 创建休息服务。我有通过 REST API 公开的数据库实体。为简化起见,假设我有一个具有以下三个字段的实体。
id
- 唯一标识符service
- 此项目所属的服务value
- 此项目的数字属性
我正在尝试实现以下 URL 架构:
@RequestMapping(value = "")
- 返回所有项目的集合
@RequestMapping(value = "/{id}")
- 使用此返回特定项目id
@RequestMapping(value = "/{service}")
- 使用此返回所有项目的集合service
这里的问题是第二条和第三条路径不明确,如果我尝试下面的 URL,Spring 不知道@RequestMapping
要匹配哪个。
http://localhost/123
我该如何处理?
spring-boot - 有没有办法为 Spring HATEOAS `ControllerLinkBuilder` 设置主机和端口?
Spring HATEOAS 提供了方便ControllerLinkBuilder
地创建到控制器方法的链接,这些链接将作为返回给客户端的 JSON/XML 中的 href 添加。例如:
...可能会生成 JSON 有点像:
然而...
我倾向于通过反向代理访问我的服务。我想大多数人可能会。这让我可以在不同的端口上运行多个服务,但让我可以通过相同的基本 URL 访问它们。不幸的是,通过代理访问意味着 Spring HATEOAS 生成的 URL 不是对访问资源有效的 URL。
现在我可以对链接进行硬编码,但这相当脆弱。根据ControllerLinkBuilder
我的控制器配置生成 URL 对我@RequestMapping
来说很有价值,因为它避免了我的链接与现实不同步的风险。
所以我想知道是否有一个属性可以用来强制主机和端口值。我正在使用 Spring Boot,因此理想情况下我可以application.properties
在每个环境中添加到文件中的属性。
笔记:
由于这个问题似乎是由 Spring 中的错误引起的,我应该指出我使用的是 Spring Boot 1.0.2.RELEASE。
spring-data-mongodb - 如何告知 Spring Data REST 我对嵌入文档的链接关系的渴望?
在 MongoDB 中,我有一个名为 Customer 的文档集合,其中嵌入了客户定义的标签。我的域对象看起来像这样(包括 Lombok 注释):
现在,对的响应GET /customers
如下所示:
我想将嵌入标签文档“调用”为单独的链接关系,以便响应GET /customers
看起来更像这样:
我怎样才能在我的应用程序中做到这一点?
spring-data - Exposing link on collection entity in spring data REST
Using spring data REST I have exposed a ProjectRepository
that supports listing projects and performing CRUD operations on them. When I go to http://localhost:8080/projects/
I get the list of projects as I expect.
What I am trying to do is add a custom action to the _links
section of the JSON response for the Project Collection.
For example, I'd like the call to http://localhost:8080/projects/
to return something like this:
Where customAction
is defined in some controller.
I've tried creating the following class:
and adding adding the following Bean to my applications configuration:
But process(...)
doesn't ever seem to get called. What is the correct way to add links to Collections of resources?