Skip to content
ADP
API Design PrincipleBETA

[ADP-110] HTTP 方法

概述

HTTP 方法,也稱為 HTTP 動詞,定義了在發出 HTTP 請求時要對資源執行的所需操作。

核心 HTTP 方法

以下 HTTP 方法是 RESTful API 設計的基礎:

GET

POST

PUT

DELETE

PATCH

其他 HTTP 方法

雖然不太常見,但這些方法在特定場景中可能有用:

  • 類似於 GET,但只檢索標頭,不檢索主體。
  • 用於檢查資源元數據或存在性,而無需傳輸整個資源。

OPTIONS

  • 用於描述目標資源的通信選項。
  • 對 CORS 預檢請求和 API 發現有幫助。

指導原則

設計 API 時,請考慮以下原則:

  • 應該支持冪等性
  • 為每個操作使用適當的 HTTP 方法以保持語義一致性。
  • 確保 GET 請求始終是安全的,不會修改伺服器狀態。
  • 對於完整的資源更新,優先使用 PUT 而不是 PATCH,以維持冪等性。
  • 對於非冪等操作或當伺服器決定資源標識符時使用 POST。
  • 為每種方法實現適當的錯誤處理和狀態代碼。

方法安全性和冪等性

  • 安全方法(GET、HEAD、OPTIONS)不應修改資源。
  • 冪等方法(GET、PUT、DELETE、HEAD、OPTIONS)多次調用應產生相同結果。

API 設計考慮因素

  • 一致性:在整個 API 中一致地使用 HTTP 方法。
  • 可緩存性:利用緩存標頭,特別是對於 GET 請求。
  • 無狀態:設計您的 API 為無狀態,每個請求包含所有必要資訊。
  • 資源命名:使用清晰、層次化的資源命名約定。

常見陷阱

  • 使用 GET 請求修改伺服器狀態。
  • 實現非冪等的 PUT 請求。
  • 過度使用 POST 進行所有操作,而不是使用適當的方法。
  • 忽視 PUT 和 PATCH 之間的語義差異。

實現示例

以下是在 RESTful API 中如何為用戶資源使用不同 HTTP 方法的簡單示例:

http
GET    /users         # 檢索用戶列表
GET    /users/{id}    # 檢索特定用戶
POST   /users         # 創建新用戶
PUT    /users/{id}    # 更新用戶(完全替換)
PATCH  /users/{id}    # 部分更新用戶
DELETE /users/{id}    # 刪除用戶

相關 ADP

參考資料