RESTful API
什么是RESTful REST全稱Representational State Transfer(表述性狀態轉移) REST并不是一種創新技術,它指的是一組架構約束
什么是RESTful
REST全稱Representational State Transfer(表述性狀態轉移)
REST并不是一種創新技術,它指的是一組架構約束條件和原則。只要架構符合REST的約束條件和原則,就可以被稱之為RESTful架構。
核心內容
1.資源和URI
2.資源的表述
3.狀態轉移(資源在客戶端發生變化進入到后續的狀態(客戶端對服務器端資源的操作行為)
設計概念和準則
網絡上所有事物都可以被抽象為資源
每一個資源都有唯一的資源標識,對資源的操作不會改變這些標識
所有操作都是無狀態的
架構特點
1.統一了客戶端訪問資源的接口
2.URL更加簡潔,易于理解,便于擴展
3.有利于不同系統之間的資源共享
請求
HEAD 獲取Request-URI所標識資源的響應信息報頭
GET 獲取Request-URI所標識的資源
POST 在Request-URI標識的資源后附加新的數據
PUT 更新Request-URI所標識的資源,返回完整的更新后的資源
PATCH 與PUT類似,但更新后只返回更新過的資源
DELETE 刪除Request-URI所標識的資源
OPTIONS 查詢服務器性能或與資源相關的選項和需求
響應
200 OK 請求成功
201 CREATED 新建或修改數據成功
204 NO CONTENT 刪除數據成功
400 BAD REQUEST 客戶端請求有語法錯誤,不能被服務器所理解
401 Unauthorized 身份驗證失敗,服務器拒絕提供服務
403 Forbidden 用戶訪問被禁止
404 Not Found 請求資源不存在
422 Unprocesable Entity 創建一個對象時發生驗證錯誤
500 Internal Server Error 服務器內部錯誤
503 服務器當前不能處理客戶端請求
適用性
對于資源型服務接口來說很合適,同時特別適合對于效率要求很高,但是對于安全要求不高的場景,所以要使用的話還是要看場景來決定。
設計要點
1.資源路徑
所有網址中不能有動詞,只能有名詞。一般來說API中的名詞應該使用復數
2.HTTP動詞
3.過濾信息
分頁參數等與主要業務無關的參數
4.狀態碼
5.錯誤處理
6.返回結果
GET /collections 返回資源對象的列表(數組)
GET /collections/identity 返回單個資源對象
POST /collections 返回新生成的資源對象
PUT /collections/identity 返回完整的資源對象
PATCH /collections/identity 返回被修改的屬性
DELETE /collections/identity 返回一個空文檔









