萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 網路安全 >  >> 網路基礎知識

HTTP 六大請求方法全解析:GET/HEAD/POST/PUT/DELETE/OPTIONS 與 RESTful 映射

RFC 7231 定義的六大標準方法

方法語義冪等性安全性典型用途請求主體回應主體
GET獲取資源表述✅ 是✅ 是 (唯讀)網頁、API 查詢、靜態資源無資源表述 (HTML/JSON/圖片...)
HEAD獲取資源**元資料** (標頭)✅ 是✅ 是檢查資源是否存在/修改時間/大小、驗證連結有效性無**無** (僅標頭)
POST提交實體並由伺服器決定 URI❌ 否❌ 否表單提交、建立子資源、登入、上傳、搜尋 (複雜查詢)實體資料結果/新資源位置 (Location)
PUT**完整替換** 指定 URI 資源✅ 是❌ 否更新整個資源 (客戶端決定 URI)、檔案上傳指定路徑完整資源表述結果/表述
DELETE刪除指定 URI 資源✅ 是❌ 否刪除資源、取消訂閱通常無狀態/結果
OPTIONS查詢目標資源支援的方法/能力✅ 是✅ 是CORS 預檢、API 發現、檢查允許方法無無 (標頭 Allow: GET, POST, PUT)

PUT vs POST 關鍵區別:URI 誰決定?

  • PUT:客戶端**指定完整 URI** (如 PUT /articles/123),語義為「把這個資源放在這裡」,冪等 (重複執行結果相同)。
  • POST:客戶端提交到**集合 URI** (如 POST /articles),伺服器**分配新 URI** (回應 201 Created + Location: /articles/456),非冪等 (重複提交建立多筆)。

RESTful CRUD 映射

CREATE  → POST   (集合 URI)  /  PUT   (客戶端指定 URI)
READ    → GET
UPDATE  → PUT    (完整替換)   /  PATCH (部分更新,RFC 5789)
DELETE  → DELETE

PATCH** (RFC 5789) 為部分更新,非冪等 (視實作),現代 API 常用於 JSON Merge Patch / JSON Patch。

其他補充方法

  • TRACE:回環診斷 (Max-Forwards),**生產環境必須停用** (XST 攻擊風險)。
  • CONNECT:建立 TLS 隧道 (HTTP Proxy 代理 HTTPS)。

實踐建議

  1. 嚴格遵循語義:查詢用 GET/HEAD,建立用 POST,完整更新用 PUT,部分更新用 PATCH,刪除用 DELETE。
  2. 善用 ETag/If-Match/If-None-Match 配合 GET/PUT 實現樂觀鎖與快取驗證。
  3. CORS 預檢請求自動發送 OPTIONS,後端需正確回應 Access-Control-Allow-Methods、Access-Control-Allow-Headers、Access-Control-Max-Age。
  4. API 版本化:/v1/users,避免破壞性變更。

copyright © 萬盛學電腦網 all rights reserved