把a(bǔ)pi放在專屬域名下,要帶版本號
api的url中應(yīng)該只有名詞,和數(shù)據(jù)庫的表或文檔資源相對應(yīng);對資源(collection)的具體操作類型則由http方法動(dòng)詞表示
(安全性:不改變資源狀態(tài),類似只讀;冪等性:執(zhí)行一次或多次,對資源狀態(tài)的改變等價(jià))
取出 - 安全、冪等
GET /collection:返回資源對象的列表(數(shù)組)
GET /collection/resource:返回單個(gè)資源對象
新建 - 不安全、不冪等
POST /collection:返回新生成的資源對象
更新 - 不安全、冪等
PUT /collection/resource:返回完整的資源對象
刪除 - 不安全、冪等
DELETE /collection/resource:返回一個(gè)空文檔
返回的記錄數(shù)量很多時(shí),不應(yīng)一次提供給用戶,api應(yīng)提供參數(shù)以過濾返回結(jié)果
狀態(tài)碼
200 OK - 服務(wù)器成功返回用戶請求的數(shù)據(jù),該操作是冪等的(Idempotent)
201 CREATED - 用戶新建或修改數(shù)據(jù)成功
202 Accepted - 表示一個(gè)請求已經(jīng)進(jìn)入后臺排隊(duì)(異步任務(wù))
204 NO CONTENT - 用戶刪除數(shù)據(jù)成功
400 INVALID REQUEST - 用戶發(fā)出的請求有錯(cuò)誤,服務(wù)器沒有進(jìn)行新建或修改數(shù)據(jù)的操作,該操作是冪等的
401 Unauthorized - 表示用戶沒有權(quán)限(令牌、用戶名、密碼錯(cuò)誤)
403 Forbidden - 表示用戶得到授權(quán)(與401錯(cuò)誤相對),但是訪問是被禁止的
404 NOT FOUND - 用戶發(fā)出的請求針對的是不存在的記錄,服務(wù)器沒有進(jìn)行操作,該操作是冪等的
406 Not Acceptable - 用戶請求的格式不可得(比如用戶請求JSON格式,但是只有XML格式)
410 Gone -用戶請求的資源被永久刪除,且不會再得到的
422 Unprocesable entity - [POST/PUT/PATCH] 當(dāng)創(chuàng)建一個(gè)對象時(shí),發(fā)生一個(gè)驗(yàn)證錯(cuò)誤
500 INTERNAL SERVER ERROR - 服務(wù)器發(fā)生錯(cuò)誤,用戶將無法判斷發(fā)出的請求是否成功盡量用json,不用xml
因?yàn)镴SON的結(jié)構(gòu)更容易映射至一般語言的數(shù)據(jù)結(jié)構(gòu)