| 方法 | 語義 | 冪等性 | 安全性 | 典型用途 | 請求主體 | 回應主體 |
|---|---|---|---|---|---|---|
| GET | 獲取資源表述 | ✅ 是 | ✅ 是 (唯讀) | 網頁、API 查詢、靜態資源 | 無 | 資源表述 (HTML/JSON/圖片...) |
| HEAD | 獲取資源**元資料** (標頭) | ✅ 是 | ✅ 是 | 檢查資源是否存在/修改時間/大小、驗證連結有效性 | 無 | **無** (僅標頭) |
| POST | 提交實體並由伺服器決定 URI | ❌ 否 | ❌ 否 | 表單提交、建立子資源、登入、上傳、搜尋 (複雜查詢) | 實體資料 | 結果/新資源位置 (Location) |
| PUT | **完整替換** 指定 URI 資源 | ✅ 是 | ❌ 否 | 更新整個資源 (客戶端決定 URI)、檔案上傳指定路徑 | 完整資源表述 | 結果/表述 |
| DELETE | 刪除指定 URI 資源 | ✅ 是 | ❌ 否 | 刪除資源、取消訂閱 | 通常無 | 狀態/結果 |
| OPTIONS | 查詢目標資源支援的方法/能力 | ✅ 是 | ✅ 是 | CORS 預檢、API 發現、檢查允許方法 | 無 | 無 (標頭 Allow: GET, POST, PUT) |
PUT /articles/123),語義為「把這個資源放在這裡」,冪等 (重複執行結果相同)。POST /articles),伺服器**分配新 URI** (回應 201 Created + Location: /articles/456),非冪等 (重複提交建立多筆)。CREATE → POST (集合 URI) / PUT (客戶端指定 URI) READ → GET UPDATE → PUT (完整替換) / PATCH (部分更新,RFC 5789) DELETE → DELETE
PATCH** (RFC 5789) 為部分更新,非冪等 (視實作),現代 API 常用於 JSON Merge Patch / JSON Patch。
ETag/If-Match/If-None-Match 配合 GET/PUT 實現樂觀鎖與快取驗證。Access-Control-Allow-Methods、Access-Control-Allow-Headers、Access-Control-Max-Age。/v1/users,避免破壞性變更。