如何在 Spring Data Rest 中隐藏 _embedded 实体字段
How to hide the _embedded entity field in Spring Data Rest
我运行一个基于Spring Boot Gradle Plugin. I recently upgraded from 2.1.9.RELEASE to 2.2.0.RELEASE的SDR申请。虽然不能 100% 确定这就是原因,但 SDR 现在似乎为每个资源公开了一个额外的 _embedded
字段。新字段包含相关实体的数据。
例如,这是一个公开的资源 2.1.9.RELEASE:
{
"uuid": "77315176-cb4f-4126-8e8b-9007457a7ce1",
"name": "root",
"_links": {
"self": {
"href": "localhost/users/1"
},
"user": {
"href": "localhost/users/1"
},
"group": {
"href": "localhost/users/1/group"
}
}
}
与 2.2.0.RELEASE 公开的相同资源:
{
"uuid": "77315176-cb4f-4126-8e8b-9007457a7ce1",
"name": "root",
"_embedded": {
"group": {
"uuid": "be43382c-7b03-4d28-9597-7284986f700b",
"name": "admin"
}
},
"_links": {
"self": {
"href": "localhost/users/1"
},
"user": {
"href": "localhost/users/1"
},
"group": {
"href": "localhost/users/1/group"
}
}
}
没有证据,我假设有以下缺点:
- 它大大增加了响应大小。我可以理解,有些用例需要这些额外的数据,但是,在这种情况下,我更喜欢根据需要通过制作 Projections 来手动公开它。
- 为了收集额外公开的数据,需要额外的数据库事务,这会对性能产生负面影响。
- 更多 public API默认公开,必须维护。同样,我更愿意使用 Projections 以尽可能减少响应。
这是我的问题:
- 是否可以恢复以前的 API 格式,例如自定义新功能还是完全关闭?
- 我想知道这是什么设计决定。考虑到上述假设的缺点,新功能有哪些优势?
原来 Spring Data Rest bug. Version 2.2.1.RELEASE 包含修复程序,恢复了通常的行为。
我运行一个基于Spring Boot Gradle Plugin. I recently upgraded from 2.1.9.RELEASE to 2.2.0.RELEASE的SDR申请。虽然不能 100% 确定这就是原因,但 SDR 现在似乎为每个资源公开了一个额外的 _embedded
字段。新字段包含相关实体的数据。
例如,这是一个公开的资源 2.1.9.RELEASE:
{
"uuid": "77315176-cb4f-4126-8e8b-9007457a7ce1",
"name": "root",
"_links": {
"self": {
"href": "localhost/users/1"
},
"user": {
"href": "localhost/users/1"
},
"group": {
"href": "localhost/users/1/group"
}
}
}
与 2.2.0.RELEASE 公开的相同资源:
{
"uuid": "77315176-cb4f-4126-8e8b-9007457a7ce1",
"name": "root",
"_embedded": {
"group": {
"uuid": "be43382c-7b03-4d28-9597-7284986f700b",
"name": "admin"
}
},
"_links": {
"self": {
"href": "localhost/users/1"
},
"user": {
"href": "localhost/users/1"
},
"group": {
"href": "localhost/users/1/group"
}
}
}
没有证据,我假设有以下缺点:
- 它大大增加了响应大小。我可以理解,有些用例需要这些额外的数据,但是,在这种情况下,我更喜欢根据需要通过制作 Projections 来手动公开它。
- 为了收集额外公开的数据,需要额外的数据库事务,这会对性能产生负面影响。
- 更多 public API默认公开,必须维护。同样,我更愿意使用 Projections 以尽可能减少响应。
这是我的问题:
- 是否可以恢复以前的 API 格式,例如自定义新功能还是完全关闭?
- 我想知道这是什么设计决定。考虑到上述假设的缺点,新功能有哪些优势?
原来 Spring Data Rest bug. Version 2.2.1.RELEASE 包含修复程序,恢复了通常的行为。