瞭解REST
REST(Representational State Transfer)由Roy Fielding於2000年在他的博士論文中引入和定義,REST是用於設計分散式系統的架構風格,它不是標準,而是一組約束,例如無狀態,具有客戶端/伺服器關係和統一介面,REST與HTTP並不嚴格相關,但最常與它相關聯。
REST原則
- 資源公開易於理解的目錄結構URI。
- 表示傳輸JSON或XML以表示資料物件和屬性。
-
訊息顯式使用HTTP方法(例如,
GET
、POST
、PUT
和DELETE
)。 - 無狀態互動在請求之間不在伺服器上儲存客戶端上下文,狀態依賴性限制和限制可伸縮性,客戶端保持會話狀態。
HTTP方法
使用HTTP方法將CRUD(建立、檢索、更新、刪除)操作對映到HTTP請求。
GET
檢索資訊,GET
請求必須是安全且冪等的,這意味著無論使用相同引數重複多少次,結果都是相同的,它們可能有副作用,但使用者不期望它們,因此它們對系統的操作不是至關重要的,請求也可以是部分的或有條件的。
檢索ID為1的地址:
GET /addresses/1
POST
請求URI上的資源對提供的實體執行某些操作,POST
通常用於建立新實體,但也可用於更新實體。
建立一個新地址:
POST /addresses
PUT
將實體儲存在URI中,PUT
可以建立新實體或更新現有實體,PUT
請求是冪等的,冪等性是PUT
與POST
請求的期望之間的主要區別。
修改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
— 伺服器錯誤
媒體型別
Accept
和Content-Type
HTTP頭可用於描述HTTP請求中傳送或請求的內容,如果客戶端正在請求JSON格式的響應,則可以將Accept
設定為application/json
,相反,在傳送資料時,將Content-Type
設定為application/xml
會告訴客戶端請求中傳送的資料是XML。