日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

架构之:REST和HATEOAS

發布時間:2024/2/28 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 架构之:REST和HATEOAS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 簡介
  • HATEOAS簡介
  • HATEOAS的格式
  • HATEOAS的Spring支持
  • 總結

簡介

我們知道REST是一種架構方式,它只是指定了六種需要遵循的基本原則,但是它指定的原則都比較寬泛,我們需要一種更加具象的約束條件來指導我們的編碼。這就是HATEOAS。

HATEOAS簡介

REST的英文全稱是REpresentational State Transfer,表示的是狀態的轉移。而HATEOAS的全稱是Hypertext As The Engine Of Application State,表示使用超文本作為應用程序的狀態。這樣兩者就關聯起來了。HATEOAS指定了狀態的表現形式。

超文本就是鏈接,在HATEOAS的規則下,所有的資源請求都是需要帶上鏈接的,這些鏈接表示可以對該資源進行的下一步操作。并且,這些鏈接是動態變化的,根據請求資源的不同而不同。所以,如果你的架構實現了HATEOAS風格的話,可以繼續減少client和server端的接口依賴關系。因為所有可以進行的操作都已經放在返回資源的超鏈接中了。

我們舉個例子,還是請求students的例子,假如我們請求:

GET /students/zhangsan HTTP/1.1 Host: api.rest.com Accept: application/json

那么返回的json可能是下面這樣子的:

HTTP/1.1 200 OK Content-Type: application/json Content-Length: ...{"student": {"student_id": 11111,"age": 10,"links": {"school": "/student/11111/school"}} }

可以看到返回的信息包含student本身的信息和相關的links信息,里面含有Student的school信息。客戶端可以通過返回的links繼續向下獲取更多的信息。

如果我們訪問另外一個student,看下返回結果有什么不同:

GET /students/lisi HTTP/1.1 Host: api.rest.com Accept: application/json

那么返回的json可能是下面這樣子的:

HTTP/1.1 200 OK Content-Type: application/json Content-Length: ...{"student": {"student_id": 2222,"age": 20,"links": {"school": "/student/2222/school","vote": "/student/2222/vote",}} }

看到有什么不同了嗎? 這次學生的age=20 ,所以擁有的選舉的權限,這次在我們的links里面多了一個vote鏈接。

links會根據資源的不同發送變化,客戶端不需要知道任何服務器端的邏輯,每個請求都包含了所有可以繼續執行的操作,從而讓客戶端和服務器端徹底解耦。

在現實世界中,當您訪問一個網站時,您會點擊它的主頁。它提供了一些快照和網站其他部分的鏈接。您單擊它們,然后您將獲得更多信息以及與上下文相關的更多相關鏈接。

類似于人與網站的交互,REST客戶端訪問初始API URI并使用服務器提供的鏈接動態發現可用操作并訪問所需的資源。客戶不需要事先了解服務或工作流中涉及的不同步驟。此外,客戶端不再需要對各種資源的URI結構進行硬編碼。 HATEOAS允許服務器在不中斷客戶端的情況下隨著API的發展進行URI更改。

HATEOAS的格式

HATEOAS有兩個比較重要的格式,分別是RFC 5988 (web linking) 和 JSON Hypermedia API Language (HAL)。

他們稍有不同,但是原理是大同小異的。感興趣的朋友可以自行查閱。

HATEOAS的Spring支持

人民需要什么,Spring就造什么。同樣的,對于REST+HATEOAS這種優美組合,怎么能夠少得了Spring的身影呢?

Spring推出了Spring HATEOAS來實現這一功能。最新的版本是1.3.0,如果你使用的Spring boot,那么使用起來將會更加的簡單,引用下面的XML就可以了:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-hateoas</artifactId><version>2.5.1</version> </dependency>

如果是非Spring boot環境,則可以這樣引用:

<dependency><groupId>org.springframework.hateoas</groupId><artifactId>spring-hateoas</artifactId><version>1.3.1</version> </dependency>

在Spring HATEOAS中提供了一系列非常有用的特征來幫助我們創建Link,從而減輕我們的工作。有關Spring HATEOAS的具體內容,我們會在后面的文章中詳細講解。

總結

如果你使用的REST架構,那么配合上HATEOAS規則應該就是最好的組合。祝你成功。

本文已收錄于 http://www.flydean.com/03-rest-hateoas/

最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的架构之:REST和HATEOAS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。