RESTful設計要素
資源路徑
在RESTful架構中,每個網址代表一種資源,所以網址中不能有動詞,只能有名詞。一般來說API中的名詞應該使用復數。
HTTP動詞
對於資源的操作(CURD),由HTTP動詞表示。
》GET:從服務器取出資源
》POST: 在服務器新建一個資源
》PUT : 在服務器更新資源(客戶端提供改變後的完整資源)
》PATCH:在服務器更新資源(客戶端提供改變的屬性)
》DELETE: 在服務器刪除資源
過濾信息
如果記錄數量很多,服務器不可能都將他們返回給用戶。API應該提供參數,過濾返回結果。
eg:
?offset=10: 指定返回記錄的開始位置
狀態碼
使用標準的HTTP狀態碼
》200 OK 服務器成功返回用戶請求的數據,該操作是冪等的
》201 CREATED 新建或修改數據成功
》204 NO CONTENT 刪除數據成功
》400 BAD REQUEST 用戶發出的請求有錯誤
》401 Unauthorized表示用戶沒有認證,無法進行當前操作
》403 Forbidden 表示用戶訪問是被禁止的
》422 Unprocesable Entity 當創建一個對象時,發生一個驗證錯誤
》500 INTERNAL SERVER ERROR服務器發生錯誤,用戶將無法判斷發出的請求是否成功。
錯誤處理
如果狀態碼是4XX或者5XX,就應該向用戶返回出錯信息,一般來說,返回的信息中將error作為鍵名,出錯信息作為鍵值即可:
{
“error”: "參數錯誤"
}
返回結果
針對不同操作,服務器向用戶返回的結果應該符合一下規範:
》GET/collections:返回資源對象的列表(數組)
》GET/collections/identity:返回單個資源對象,如果該資源不存在,則返回404狀態碼
》POST/collections:返回新生成的資源對象
》PUT/collections/identity:返回完整的資源對象
》PATCH/collections/identity: 返回被修改的屬性
》DELETE/collections/identity:返回204狀態碼 和 一個空的響應體
RESTful設計要素