领先一步
VMware 提供培训和认证,助您加速进步。
了解更多尊敬的 Spring 社区,我们很自豪地宣布 Spring HATEOAS 1.0.0 的第二个发布候选版本。自我们 上次发布 以来,Spring HATEOAS 已经取得了长足的进步,又发布了两个里程碑版本和两个 RC 版本。
这是总结
性能改进
Spring HATEOS 现在基于 Spring Framework 5.2 和 Reactor 的 Dysprosium 版本。这对支持 Spring Data Moore 和 Spring Boot 2.2 等下游项目至关重要。
现在支持同时包含超媒体和非超媒体端点的 Spring WebFlux 应用程序。
改进了参考文档的许多重要部分。
创建了一个 Spring HATEOAS Gitter 频道。
修复了各种媒体类型中的问题,以确保它们符合规范定义,并且不会引发意外的异常。
让我们详细看看其中一些特性。
为 API 添加的最容易出问题的功能之一就是国际化文本。许多客户端通过解析 payload 的内容来模仿服务器端规则。当服务器希望采用特定于区域设置的文本时,这会使它们陷入大规模的破坏性更改。说服您的客户端采用基于链接的方法,可以为使用 Spring 资源束来调整链接上显示的文本打开大门。
HAL 为其链接对象定义了 title 属性。这些 title 可以通过使用 Spring 的资源束抽象和名为 rest-messages 的资源束来填充,以便客户端可以直接在它们的 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=Firstname (5) Employee.firstName=Firstname (6) com.acme.Employee.firstName._prompt=Firstname (7)
使用 default 作为键的 title 的全局定义。
使用实际的 affordance 名称作为键的 title 的全局定义。除非在创建 affordance 时显式定义,否则此项默认为 $httpMethod + $simpleInputTypeName。
本地定义的 title,将应用于所有名为 Employee 的类型。
使用完全限定的类型名称的 title 定义。
所有名为 email 的属性都将显示“Firstname”,而不管它们在哪个类型中声明。
名为 Employee 的类型中的 firstName 属性将显示“Firstname”提示。
com.acme.Employee 的 firstName 属性将分配“Firstname”提示。
这让您可以控制向客户展示他们需要看到的内容,并使您的客户端在 payload 更改时不必担心。
得益于社区和我们团队的共同努力,我们加速了 hypermedia 的渲染。这包括缓存关键部分,将不必要的对象分配移出热路径,甚至消除了被用于正常控制流的异常。
此外,这个项目最初是在 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 找到构件。