版本(Versioning)
所有的API必須保持向后兼容,必須在引入新版本API的同時確保舊版本API仍然可用。所以應該為其提供版本支持。必須在#URL中嵌入版本編號,格式要求如下:
http://URL/api/v1/*
端點(Endpoints)
端點就是指向特定資源或資源集合的URL。在端點的設計中,必須遵守下列約定:
1、URL的命名 必須全部小寫
2、URL中資源(resource)的命名必須是名詞,并且必須是復數(shù)形式
3、必須優(yōu)先使用 Restful類型的URL
4、URL 必須是易讀的
5、URL 一定不可暴露服務器架構
6、分頁查詢使用page區(qū)分
7、批量操作使用list區(qū)分
HTTP動詞
對于資源的具體操作類型,由HTTP動詞表示。常用的 HTTP動詞有下面五個(括號里是對應的 SQL命令)。
GET(SELECT):從服務器取出資源(一項或多項)。
POST(CREATE):在服務器新建一個資源。
PUT(UPDATE):在服務器更新資源(客戶端提供改變后的完整資源)。
PATCH(UPDATE):在服務器更新資源(客戶端提供改變的屬性)。
DELETE(DELETE):從服務器刪除資源。
響應(Response)
所有的API響應,必須遵守 HTTP設計規(guī)范,必須選擇合適的 HTTP狀態(tài)碼。一定不可所有接口都返回狀態(tài)碼為 200的 HTTP響應.
下表列舉了常見的HTTP狀態(tài)碼:
1xx代表請求已被接受,需要繼續(xù)處理
2xx請求已成功,請求所希望的響應頭或數(shù)據(jù)體將隨此響應返回
3xx重定向
4xx客戶端原因引起的錯誤
5xx服務端原因引起的錯誤
只有來自客戶端的請求被正確的處理后才能返回2xx的響應,所以當 API 返回 2xx 類型的狀態(tài)碼時,前端 必須 認定該請求已處理成功。
必須強調(diào)的是,所有API 一定不可返回 1xx類型的狀態(tài)碼。當 API發(fā)生錯誤時,必須返回出錯時的詳細信息并直接放入響應實體中。
應該在返回的錯誤信息中,同時包含面向開發(fā)者和面向用戶的提示信息,前者可方便開發(fā)人員調(diào)試,后者可直接展示給終端用戶查看如:
{
"message": "直接展示給終端用戶的錯誤信息",
"error_code": "業(yè)務錯誤碼",
"error": "供開發(fā)者查看的錯誤信息",
}