API 設計最佳實踐(簡版)

Restful API 本文簡稱API,是一個種面向資源的架構。在Restful中一個API對應一個資源,資源可以是文本,圖片,視頻等。API特徵有如下:

  • 每一個URI代表一種資源
  • 客戶端和服務器之間,傳遞這種資源的某種表現層
  • 客戶端通過HTTP動詞,對服務器端資源進行操作,實現表現層狀態轉化

對於資源的具體操作類型,由HTTP動詞表示。
常用的HTTP動詞有下面五個(括號裏是對應的SQL命令)另外有兩個不常用。

GET(SELECT):從服務器取出資源(一項或多項)。
POST(CREATE):在服務器新建一個資源。
PUT(UPDATE):在服務器更新資源(客戶端提供改變後的完整資源)。
PATCH(UPDATE):在服務器更新資源(客戶端提供改變的屬性)。
DELETE(DELETE):從服務器刪除資源。
HEAD:獲取資源的元數據。
OPTIONS:獲取信息,關於資源的哪些屬性是客戶端可以改變的。

下面是一些例子。

GET /zoos:列出所有動物園
POST /zoos:新建一個動物園
GET /zoos/ID:獲取某個指定動物園的信息
PUT /zoos/ID:更新某個指定動物園的信息(提供該動物園的全部信息)
PATCH /zoos/ID:更新某個指定動物園的信息(提供該動物園的部分信息)
DELETE /zoos/ID:刪除某個動物園
GET /zoos/ID/animals:列出某個指定動物園的所有動物
DELETE /zoos/ID/animals/ID:刪除某個指定動物園的指定動物

API 設計黃金法則

對API格式的決定有疑問,黃金規則可以幫助我們做出正確的決定:

  • 扁平比嵌套好
  • 簡單勝於複雜
  • 字符串比數字好
  • 一致性比定製更好

最佳實踐

URL命名規則

  • URL請求採用小寫字母,數字,部分特殊符號組成
  • URL請求中不採用大小寫混合的駝峯命名方式,儘量採用全小寫單詞
  • 如果需要連接多個單詞,則採用連接符短橫"-"或下劃線"_"連接單詞,且保持風格統一

根據返回資源定義URL

  • 獲取單數的集合使用單數名詞
  • 獲取複數的集合使用複數的名詞 不推薦:GET /user 推薦:GET /users

URL以集合開始,以標識符結束

URL標識一種資源,所以規範的URL是以集合開始以ID結束
不推薦:GET /category/:categoryId/price 推薦:GET /category/:categoryId

URL中不添加動作

不要在URL中使用動詞來表達你的意圖。相反,使用適當的HTTP方法來描述操作。
不推薦:POST /updateuser/{userId} GET /getusers
推薦:PUT /user/{userId}

不使用表名做URL

不要只使用表名作爲資源名。從長遠來看,這種懶惰是有害的,這是因爲表名會公開底層體系結構。
不推薦:product_order 推薦:product-orders

使用版本號

建議在 URL 中包含 API 的版本號。
https://example.com/api/v1/... <-- 第一版 API
https://example.com/api/v2/... <-- 第二版 API
好處是:1. API 升級不影響調用方的代碼,2. 升級後的 API 可以不向前兼容。

對非資源URL使用動詞

如果你有一個端點,它只返回一個操作。在這種情況下,你可以使用動詞。例如,如果你想要向用戶重新發送警報。推薦:POST /alarm/245743/resend

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