Spring 指南(瞭解REST)

瞭解REST

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

REST原則

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

HTTP方法

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

GET

檢索信息,GET請求必須是安全且冪等的,這意味着不管使用相同參數重複多少次,結果都是相同的,它們可能有反作用,但用戶不指望它們,所以它們對系統的操做不是相當重要的,請求也能夠是部分的或有條件的。服務器

檢索ID爲1的地址:架構

GET /addresses/1

POST

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

建立一個新地址:異步

POST /addresses

PUT

將實體存儲在URI中,PUT能夠建立新實體或更新現有實體,PUT請求是冪等的,冪等性是PUTPOST請求的指望之間的主要區別。分佈式

修改ID爲1的地址:設計

PUT /addresses/1
注意:PUT替換現有實體,若是僅提供數據元素的子集,則其他數據元素將替換爲空或 null

PATCH

僅更新URI上實體的指定字段,PATCH請求既不安全也不是冪等(RFC 5789),這是由於PATCH操做沒法確保整個資源已更新。code

PATCH /addresses/1

DELETE

請求刪除資源,可是,沒必要當即刪除資源,它多是異步或長時間運行的請求。xml

刪除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。

相關文章
相關標籤/搜索