Spring使用HATEOAS約束

這裏先複述一下Richardson提出的REST成熟度模型,固然詳細的介紹能夠看我參考的連接html

  • 第一個層次(Level 0)的 Web 服務只是使用 HTTP 做爲傳輸方式,實際上只是遠程方法調用(RPC)的一種具體形式。SOAP 和 XML-RPC 都屬於此類。
  • 第二個層次(Level 1)的 Web 服務引入了資源的概念,每一個資源有對應的標識符和表達。
  • 第三個層次(Level 2)的 Web 服務使用不一樣的 HTTP 方法來進行不一樣的操做,而且使用 HTTP 狀態碼來表示不一樣的結果。
  • 第四個層次(Level 3)的 Web 服務使用 HATEOAS。在資源的表達中包含了連接信息。客戶端能夠根據連接來發現能夠執行的動做。

這裏取一張圖,來自richardsonMaturityModelgit

HATEOAS(The Hypermedia As The Engine Of Application Statue)是REST架構的主要約束。「hepermedia」表示任何包含指向圖片、電影、文字等資源的連接,Web是超媒體的經典例子。HATEOAS背後的思想其實很是簡單,就是響應中包含指向其它資源的連接。客戶端能夠利用這些連接和服務器交互。github

而後咱們寫個demo實踐一下,是怎麼樣一個效果,先添加須要的依賴包:
spring

這裏看到咱們主要添加了spring-boot-starter-hateoas來支持hateoas約束api

而後咱們先定義一個交互的Dto,這個須要繼承org.springframework.hateoas.ResourceSupport服務器

接下來咱們就能夠實現咱們的rest api接口啦架構

這時候咱們能夠在swagger頁面使用一下spring-boot

能夠看到返回的數據中帶有了links信息,客戶端能夠根據這些信息作相應的處理,可是總感受一切沒有想的那麼容易,客戶端並不定會買帳。ui

之類Link類其實沒有那麼多信息,包含 rel 和 href 兩個屬性。屬性 rel 表示的是連接所表示的關係(relationship),href 表示的是連接指向的資源標識符,通常是 URI。.net

附:

swagger默認訪問頁面

boot工程格式:http://localhost:4500/swagger-ui.html

非boot工程:http://10.166.10.169:8085/xxx/swagger-ui.html

參考:

https://my.oschina.net/crooner/blog/644825

https://blog.csdn.net/tiaya/article/details/78408098

https://martinfowler.com/articles/richardsonMaturityModel.html

https://github.com/PacktPublishing/Mastering-Spring-5.0

相關文章
相關標籤/搜索