Spring 指南(瞭解REST)

博弈發表於2019-01-19

瞭解REST

REST(Representational State Transfer)由Roy Fielding於2000年在他的博士論文中引入和定義,REST是用於設計分散式系統的架構風格,它不是標準,而是一組約束,例如無狀態,具有客戶端/伺服器關係和統一介面,REST與HTTP並不嚴格相關,但最常與它相關聯。

REST原則

  • 資源公開易於理解的目錄結構URI。
  • 表示傳輸JSON或XML以表示資料物件和屬性。
  • 訊息顯式使用HTTP方法(例如,GETPOSTPUTDELETE)。
  • 無狀態互動在請求之間不在伺服器上儲存客戶端上下文,狀態依賴性限制和限制可伸縮性,客戶端保持會話狀態。

HTTP方法

使用HTTP方法將CRUD(建立、檢索、更新、刪除)操作對映到HTTP請求。

GET

檢索資訊,GET請求必須是安全且冪等的,這意味著無論使用相同引數重複多少次,結果都是相同的,它們可能有副作用,但使用者不期望它們,因此它們對系統的操作不是至關重要的,請求也可以是部分的或有條件的。

檢索ID為1的地址:

GET /addresses/1

POST

請求URI上的資源對提供的實體執行某些操作,POST通常用於建立新實體,但也可用於更新實體。

建立一個新地址:

POST /addresses

PUT

將實體儲存在URI中,PUT可以建立新實體或更新現有實體,PUT請求是冪等的,冪等性是PUTPOST請求的期望之間的主要區別。

修改ID為1的地址:

PUT /addresses/1

注意:PUT替換現有實體,如果僅提供資料元素的子集,則其餘資料元素將替換為空或null

PATCH

僅更新URI上實體的指定欄位,PATCH請求既不安全也不是冪等(RFC 5789),這是因為PATCH操作無法確保整個資源已更新。

PATCH /addresses/1

DELETE

請求刪除資源,但是,不必立即刪除資源,它可能是非同步或長時間執行的請求。

刪除ID為1的地址:

DELETE /addresses/1

HTTP狀態碼

狀態碼錶明HTTP請求的結果。

  • 1XX — 資訊
  • 2XX — 成功
  • 3XX — 重定向
  • 4XX — 客戶端錯誤
  • 5XX — 伺服器錯誤

媒體型別

AcceptContent-Type HTTP頭可用於描述HTTP請求中傳送或請求的內容,如果客戶端正在請求JSON格式的響應,則可以將Accept設定為application/json,相反,在傳送資料時,將Content-Type設定為application/xml會告訴客戶端請求中傳送的資料是XML。


相關文章