API 接口設計規範總結

本文總結api接口開發中的一些規範,避免在開發過程中出現‘選擇性’的問題。

描述 樣例 備註
API 的根入口點應儘可能保持足夠簡單 ① api.example.com/* ②example.com/api/*
在 URL 中嵌入版本編號 api.example.com/v1/*
URL 的命名規範: ①命名必須全部小寫;②資源路由的命名必須是名詞,並且是複數形式;③必須 優先使用 Restful 類型的 URL;④不能出現 -,必須 用下劃線 _ 代替;⑤必須 是易讀的;⑥一定不可 暴露服務器架構 https://api.example.com/zoos https://api.example.com/animals https://api.example.com/zoos/{zoo}/animals https://api.example.com/animal_types https://api.example.com/employees
請求方式:①刪除資源 必須 用 DELETE 方法;②創建新的資源 必須 使用 POST 方法;③更新資源 應該 使用 PUT 方法;④獲取資源信息 必須 使用 GET 方法; - 開發中常以:get請求只是用來查詢數據;post請求是用來增刪改數據
一些通用的參數名稱約定 ①limit=1 指定返回記錄的數量; ②offset=10:指定返回記錄的開始位置;③page=2&per_page=100:指定第幾頁,以及每頁的記錄數;
使用Access Token進行身份認證 應該 使用 OAuth2.0 的方式爲 API 調用者提供登錄認證。必須 先通過登錄接口獲取 Access Token 後再通過該 token 調用需要身份認證的 API。 也可以採用session的登錄機制

Response標準格式:

HTTP/1.1 200 ok
Content-Type: application/json
Server: example.com

{
    "code": 0,
    "msg": "success",
    "data": {
        "username": "username"
    }
}
or
{
    "code": -1,
    "msg": "該活動不存在",
}

常見的狀態返回碼:

狀態碼 描述
1xx 代表請求已被接受,需要繼續處理
2xx 請求已成功,請求所希望的響應頭或數據體將隨此響應返回
3xx 重定向
4xx 客戶端原因引起的錯誤
5xx 服務端原因引起的錯誤

注:
1、只有來自客戶端的請求被正確的處理後才能返回 2xx 的響應,所以當 API 返回 2xx 類型的狀態碼時,前端 必須 認定該請求已處理成功。
2、所有 API 一定不可 返回 1xx 類型的狀態碼。
3、所有 API 一定不可 返回 3xx 類型的狀態碼。
4、狀態碼從100000開始,基本能滿足大部分的項目需求,而且可讀性強。
例如 :

狀態碼 說明
0 請求成功
45**** 實際業務中的狀態碼
400000 無效的簽名
404001 您查找的資源不存在
403001 權限不足
403002 用戶已禁用
405001 請求方法不被服務器允許
406001 不支持客戶端指定的數據格式
408001 客戶端請求超時
409001 狀態碼錶示因爲請求存在衝突無法處理,如:手機號已存在
410001 所請求的資源已不存在,並且未來也不會存在
413001 服務器拒絕處理當前請求,提交的實體數據大小超過了服務器願意或者能夠處理的範圍
414001 請求的 URI 長度超過了服務器能夠解釋的長度,因此服務器拒絕對該請求提供服務。
415001 通常表示服務器不支持客戶端請求首部 Content-Type 指定的數據格式。
429001 你操作太頻繁了(表示用戶請求次數超過允許範圍)
500001 服務器出錯
503001 服務器暫時處於不可用狀態,當服務器需要維護或第三方 API 請求超時 / 不可達時

參考:
RESTful API 設計規範

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章