Spring HATEOAS 1.0.0.RC2 发布

工程 | Greg L. Turnquist | 2019年9月5日 | ...

尊敬的 Spring 社区成员们,我们自豪地宣布 Spring HATEOAS 1.0.0 的第二个候选版本发布。自从我们上次发布以来,Spring HATEOAS 通过两个里程碑版本和两个候选版本取得了长足的进步。

以下是摘要

  • HALHAL-FORMS都提供了国际化支持。

  • 性能改进

  • 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 的资源包填充这些标题,以便客户端可以直接在他们的 UI 中使用它们。此捆绑包将自动设置,并在 HAL 链接序列化期间使用。

要为 HAL 链接定义标题,请使用键模板 _links.$relationName.title,如下所示

示例 1. 一个示例 rest-messages.properties 文件

_links.cancel.title=取消订单 _links.payment.title=继续结账

这将导致以下 HAL 表示

示例 2. 一个带有定义的链接标题的示例 HAL 文档

{ "_links" : { "cancel" : { "href" : "…" "title" : "取消订单" }, "payment" : { "href" : "…" "title" : "继续结账" } } }

您可以自由地包含 rest-messages.properties 用于默认值,然后包含例如 rest-messages_de.properties 用于您的德语客户端等。

HAL-FORMS 同时具有 titleprompt 属性,用于人类使用。查看以下 rest-messages.properties 条目

示例 3. 定义 HAL-FORMS 模板标题和提示

_templates.default.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)

  1. 使用 default 作为键的全局标题定义。

  2. 使用实际 affordance 名称作为键的全局标题定义。除非在创建 affordance 时明确定义,否则默认为 $httpMethod + $simpleInputTypeName

  3. 要应用于所有名为 Employee 的类型的局部定义标题。

  4. 使用完全限定类型名称的标题定义。

  5. 所有名为 email 的属性都将呈现“名字”,而不管它们在哪个类型中声明。

  6. 名为 Employee 的类型的 firstName 属性将提示“名字”。

  7. com.acme.Employee 的 firstName 属性将被分配“名字”提示。

这使您可以控制向客户显示他们需要看到的内容,并允许您的客户端在有效负载发生更改时不必担心。

性能改进

由于社区和我们团队的努力,我们加快了超媒体的渲染速度。这包括缓存关键部分、将不必要的对象分配移出热点路径,甚至摆脱用于正常控制流的异常。

此外,这个项目最初基于 Java 6,现在继续采用 Java 8 功能,这使得加速变得更容易。同样,感谢通过 JMH(Java 微基准测试工具)进行的大量负载测试,我们能够发现许多迫切需要关注的领域。

Spring Framework 5.2 + Reactor Dysprosium + Java.NEXT

作为 Spring Data Moore 版本的重要依赖项,Spring HATEOAS 已与**Spring Framework 5.2** 和**Reactor Dysprosium** 对齐。所有这些都指向**Spring Boot 2.2**。

同时,我们针对 Spring Framework 的最新里程碑/候选版本以及快照版本构建每个提交。这样,我们可以快速发现问题并确保它们不会影响您。

如果您是一位先锋,并且正在使用较新版本的 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找到构件。

获取 Spring 新闻通讯

随时关注 Spring 新闻通讯

订阅

领先一步

VMware 提供培训和认证,以加快您的进步。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部