gpt4 book ai didi

spring-data-rest - 使集合属性呈现为关系而不是 json HAL 表示中的属性

转载 作者:行者123 更新时间:2023-12-02 00:59:26 27 4
gpt4 key购买 nike

我得到了 hal 格式的响应,如下所示:

{
"name": "Publisher A",
"bookPublishers": [
{
"publishedDate": "2019-07-12T08:19:04.583+0000",
"_links": {
"publisher": {
"href": "http://localhost:8080/api/publishers/1"
},
"book": {
"href": "http://localhost:8080/api/books/2"
}
}
},
{
"publishedDate": "2019-07-12T08:19:04.564+0000",
"_links": {
"publisher": {
"href": "http://localhost:8080/api/publishers/1"
},
"book": {
"href": "http://localhost:8080/api/books/1"
}
}
}
],
"_links": {
"self": {
"href": "http://localhost:8080/api/publishers/1"
},
"publisher": {
"href": "http://localhost:8080/api/publishers/1"
},
"friends": {
"href": "http://localhost:8080/api/publishers/1/friends"
},
"createdBy": {
"href": "http://localhost:8080/api/publishers/1/contact"
}
}
}

我在 friend 链接中看到了bookPublishers属性。恕我直言,它们应该都是关联链接(请参阅 2.4. Creating the Associations )我可以在哪里“放置”其他资源。

我想让 spring 渲染 bookPublishers 和 friend 一样。

示例项目在这里:https://github.com/luvarqpp/poc-springHalRelations

你可以这样做:

git clone https://github.com/luvarqpp/poc-springHalRelations.git
cd poc-springHalRelations
mvn clean spring-boot:run

然后打开http://localhost:8080/api

PS:额外的问题,为业务逻辑提供自己的关系的最简单方法是什么,例如关系“renameAuthor”。

最佳答案

对于集合关系,当相关类型的存储库存在时,Spring Data 将提供一个链接。如果不存在存储库,则该集合将内嵌在响应中,否则客户端将如何获取数据。

因此,请为您的 BookPublisher 类型创建一个存储库。

相关documentation部分引用:

the component responsible for creating the links to referenced entities (such as those objects under the _links property in the object’s JSON representation). It takes an @Entity and iterates over its properties, creating links for those properties that are managed by a Repository and copying across any embedded or simple properties.

您还可以创建一个投影,以便在需要时嵌入数据。客户端可以在请求中指定此投影,从而防止额外的服务器调用。

例如

/publisher/1?projection=withBookPublishers。

https://docs.spring.io/spring-data/rest/docs/current/reference/html/#projections-excerpts.projections

关于spring-data-rest - 使集合属性呈现为关系而不是 json HAL 表示中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57782189/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com