對restful的理解

理解restful之前先來了解一下rest.
REST(英文:Representational State Transfer,簡稱 REST,意思是:(資源)表述性狀態轉化)描述了一個架構樣式的網絡系統, 比如 web 應用程序。

它是一種軟件架構風格、設計風格,而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和服務器交互類的軟件。基於這個風格設計的軟件可以更簡潔,更有層次,更易於實現緩存等機制。

它本身並沒有什麼實用性,其核心價值在於如何設計出符合 REST 風格的網絡接口。

restful就是rest的一種實現:
主要特徵有以下三個:

  • 資源(Resources):
    網絡上的一個實體,或者說是網絡上的一個具體信息。(簡單來說,就是肯定是名詞)

  • 表現層(Representation):
    把資源具體呈現出來的形式,叫做它的表現層 (Representation)。比如,文本可以用 txt 格式表現,也可以用 HTML 格式、XML 格式、JSON 格式表現,甚至可以採用二進制格式。(對應http請求頭:Acceppt,Content-Type)

  • 狀態轉化(State Transfer):
    以不同的http method來標示你要進行什麼類型的操作(get-查詢,post-新增, put-更新,delete-刪除)

我覺得post和put的最大區別是:如果你的接口接受put請求,那麼就表示你的接口是冪等的,也就是同一個url重複訪問,結果都一樣,就算你是更新操作,如果你是這麼寫sql的num = num+5,而不是num=10,那麼你的接口也不是冥等的,也應該是post,而不是put.

一個簡單的例子:
不符合restful:/user/getUserById?id=1
符合:/user/1 查詢 http請求方法爲get
/user/1 刪除 http請求方法爲delete

總結就是:
1.你提供的地址是個url(統一資源定位符),只是能定位一個資源,而不是從url中體現要進行什麼操作。
2.通過請求方法體現你對資源做什麼操作
3.服務器端能根據客戶端的Accept請求頭,返回對應格式的類型,以content-type來告知客戶端返回什麼格式的內容。

不知道有沒有公司是嚴格驗證這個規範來的,我覺得要是接口太多,業務太複雜,這個根本沒法滿足呀

發佈了51 篇原創文章 · 獲贊 41 · 訪問量 4933
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章