Spring HATEOAS 1.0.0.RC2 版本釋出

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

親愛的 Spring 社群,我們很榮幸地宣布 Spring HATEOAS 1.0.0 的第二個候選版本。自從我們上次發布以來,Spring HATEOAS 在兩個更多的里程碑版本和兩個 RC 版本中取得了很大的進展。

以下是摘要

  • 支援 HALHAL-FORMS 的國際化。

  • 效能改進

  • 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 屬性。可以使用 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 屬性將被分配「名字」的提示。

這讓您可以控制向您的客戶顯示他們需要看到的內容,並允許您的用戶端在 payload 發生變更時不用擔心。

效能改進

感謝社群和我們團隊的努力,我們加快了超媒體的呈現速度。這包括快取關鍵位元、將不必要的物件配置從熱路徑中移開,甚至擺脫了用於正常控制流程的例外狀況。

此外,這個從 Java 6 開始的專案,繼續採用 Java 8 的功能,使其更容易加速。另外,由於通過 JMH (Java Microbenchmark Harness) 的大量負載測試,我們能夠發現許多迫切需要關注的領域。

Spring Framework 5.2 + Reactor Dysprosium + Java.NEXT

作為 Spring Data Moore 發布系列的關鍵依賴項,Spring HATEOAS 已與 Spring Framework 5.2Reactor 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 找到這些構件。

取得 Spring 電子報

隨時關注 Spring 電子報

訂閱

領先一步

VMware 提供培訓和認證,以加速您的進展。

瞭解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔案。

瞭解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

檢視全部