领先一步
VMware 提供培训和认证,以助您加速进步。
了解更多亲爱的 Spring 社区,我们很高兴宣布 Spring HATEOAS 1.0.0 的第二个发布候选版本。自上次发布以来,Spring HATEOAS 取得了巨大进展,又发布了两个里程碑版本和两个 RC 版本。
总结如下
性能改进
Spring HATEOAS 现在基于 Spring Framework 5.2 和 Reactor 的 Dysprosium 版本序列。这对于支持下游项目如 Spring Data Moore 和 Spring Boot 2.2 至关重要。
现在支持同时具有超媒体和非超媒体端点的 Spring WebFlux 应用。
改进了参考文档的主要部分。
创建了一个 Spring HATEOAS Gitter 频道。
修复了各种媒体类型中的问题,以确保它们符合规范定义,并且不会抛出意外异常。
让我们详细看看其中一些特性。
国际化文本是添加到 API 中最脆弱的特性之一。许多客户端通过解析载荷内容来模仿服务器端规则。当服务器想要采用特定于语言环境的文本时,这会导致客户端面临大规模的破坏性变更。说服您的客户端采用基于链接的方法,为使用 Spring 资源包来调整链接上显示的文本打开了大门。
HAL 为其链接对象定义了一个 title 属性。通过使用 Spring 的资源包抽象以及名为 rest-messages
的资源包,可以填充这些 title,以便客户端可以直接在他们的 UI 中使用它们。这个资源包将自动设置,并在 HAL 链接序列化期间使用。
要为 HAL 链接定义 title,请使用键模板 _links.$relationName.title
,如下所示
示例 1. rest-messages.properties
示例
_links.cancel.title=取消订单 _links.payment.title=继续结账
这将产生以下 HAL 表示
示例 2. 定义了链接 title 的 HAL 文档示例
{ "_links" : { "cancel" : { "href" : "…" "title" : "取消订单" }, "payment" : { "href" : "…" "title" : "继续结账" } } }
在此基础上,您可以自由地包含用于默认值的 rest-messages.properties
,然后例如为您的德国客户端包含 rest-messages_de.properties
等。
HAL-FORMS 具有 title
和 prompt
属性,旨在供人类消费。请看以下 rest-messages.properties
条目
示例 3. 定义 HAL-FORMS 模板 title 和 prompt
_templates.default.title=某个 title (1) _templates.putEmployee.title=创建员工 (2) Employee._templates.default.title=创建员工 (3) com.acme.Employee._templates.default.title=创建员工 (4)
firstName._prompt=名字 (5) Employee.firstName=名字 (6) com.acme.Employee.firstName._prompt=名字 (7)
使用 default 作为键的 title 全局定义。
使用实际的 affordance 名称作为键的 title 全局定义。除非在创建 affordance 时明确定义,否则这默认为 $httpMethod + $simpleInputTypeName
。
应用于所有名为 Employee
的类型的本地定义 title。
使用完全限定类型名称的 title 定义。
所有名为 email 的属性都将呈现“名字”,无论它们在哪种类型中声明。
名为 Employee 的类型中的 firstName 属性将提示“名字”。
com.acme.Employee 的 firstName 属性将被赋予“名字”的 prompt。
这使您能够控制向客户展示他们需要看到的内容,并允许您的客户端在载荷发生变化时无需担心。
感谢社区和我们团队的共同努力,我们加快了超媒体的渲染速度。这包括缓存关键部分,将不必要的对象分配移出热路径,甚至去除了用于正常控制流的异常。
此外,这个始于 Java 6 的项目继续采用 Java 8 的特性,这使得加速变得更容易。另外,感谢通过 JMH (Java Microbenchmark Harness) 进行的大量负载测试,我们得以发现许多急需关注的领域。
作为 Spring Data Moore
版本序列的关键依赖项,Spring HATEOAS 已与 Spring Framework 5.2 和 Reactor Dysprosium 对齐。这一切都为 Spring Boot 2.2 铺平了道路。
同时,我们会针对 Spring Framework 的最新里程碑/RC 版本以及快照版本构建每个提交。通过这种方式,我们可以快速发现问题并确保它们不会破坏您的代码。
如果您是先行者并使用较新版本的 Java,您应该很高兴知道我们会针对 LTS 版本 (AdoptOpenJDK 8 & 11) 以及 Docker Hub 上提供的最新 Java 版本 (AdoptOpenJDK 12) 运行每个提交。通过这种方式,如果 Java 社区出现一些破坏性的 API 变更,也不会感到意外。
社区很重要。这就是为什么我们开通了 Spring HATEOAS Gitter 频道。欢迎加入我们!如果您正在使用 Spring HATEOAS 构建 API 并遇到问题,或者在某个地方卡住了,请来找我们。社区随时准备提供帮助。
还缺少什么吗?请告诉我们!已有超过 14 个已关闭的问题,请务必查看。并且请告诉我们您的想法!
请查看下面的项目链接。
链接:项目主页 | GitHub | 问题 | Gitter
作为发布候选版本,您可以在 https://repo.spring.io/libs-milestone 找到相应的构件。