S
S
Spring 实战(第五版)
搜索文档…
S
S
Spring 实战(第五版)
Spring 实战(第 5 版)
第一部分 Spring 基础
第 1 章 Spring 入门
第 2 章 开发 Web 应用程序
第 3 章 处理数据
第 4 章 Spring 安全
第 5 章 使用配置属性
第二部分 集成 Spring
第 6 章 创建 REST 服务
6.1 编写 RESTful 控制器
6.2 启用超媒体
6.2.1 添加超链接
6.2.2 创建资源装配器
6.2.3 嵌套命名关系
6.3 启用以数据为中心的服务
6.4 小结
第 7 章 调用 REST 服务
第 8 章 发送异步消息
第 9 章 集成 Spring
第三部分 响应式 Spring
第 10 章 Reactor 介绍
第 11 章 开发响应式 API
第 12 章 响应式持久化数据
第四部分 云原生 Spring
第 13 章 服务发现
第 14 章 配置管理
第 15 章 处理失败和时延
第五部分 部署Spring
第 16 章 使用 SpringBoot Actuator
第 17 章 管理 Spring
第 18 章 使用 JMX 监控 Spring
第 19 章 部署 Spring
由
GitBook
提供支持
6.2.3 嵌套命名关系
如果仔细看看程序清单 6.3,会发现顶级元素像这样:
{
"_embedded": {
"tacoResourceList": [
...
]
}
}
最值得注意的是 tacoResourceList 这个名称,它源于 List<Resource> 中创建的 Resources 对象实例,虽然不太可能,但是如果将 TacoResource 类名称重构为其他名称,那么 JSON 中的字段名将会需要更改以与之匹配,这可能会破坏任何依赖该名称的客户端。
@Relation 注解可以帮助打破 JSON 字段名与 Java 中定义的资源类型类名之间的耦合。通过在 TacoResource 上使用 @Relationip 注解,可以指定 Spring HATEOAS 应该如何在 JSON 结果中字段的命名:
@Relation
(
value
=
"taco"
,
collectionRelation
=
"tacos"
)
public
class
TacoResources
extends
ResourcesSupport
{
...
}
在这里,已经指定当资源对象中使用 TacoResource 对象列表时,应该将其命名为 tacos。虽然在我们的 API 中没有使用它,但是一个 TacoResource 对象应该在 JSON 中被称为 taco。
因此,从
/design/recent
返回的 JSON 现在看起来是这样的(无论在 TacoResource 上执行或不执行什么重构):
{
"_embedded": {
"tacos": [
...
]
}
}
Spring HATEOAS 使向 API 添加链接变得非常简单明了。尽管如此,它确实添加了几行不需要的代码。因此,一些开发人员可能会选择不在他们的 API 中使用 HATEOAS,即使这意味着如果 API 的 URL 模式发生变化,客户端代码可能会被破坏。
如果在存储库中使用 Spring Data,可能会有一个双赢的方案。让我们看看 Spring Data REST 如何根据第 3 章中使用 Spring Data 创建的数据存储库自动创建 API。
以前
6.2.2 创建资源装配器
下一个
6.3 启用以数据为中心的服务
最近更新
2yr ago
复制链接