HTTP 請求方法詳解
HTTP 共定義了九種標準請求方法,但日常流量大多只用其中幾種。下表說明每種方法的作用、是否安全與冪等,以及成功呼叫時回傳的狀態碼。
| 方法 | 用途 | 安全? | 冪等? | 成功狀態 |
|---|---|---|---|---|
| GET | Retrieve a resource | Yes | Yes | 200 OK |
| HEAD | Retrieve headers only, no body | Yes | Yes | 200 OK |
| POST | Create a resource or trigger an action | No | No | 201 Created |
| PUT | Replace a resource entirely | No | Yes | 200 OK / 204 No Content |
| PATCH | Apply a partial update | No | No | 200 OK |
| DELETE | Remove a resource | No | Yes | 200 OK / 204 No Content |
| OPTIONS | CORS preflight; list allowed methods | Yes | Yes | 204 / 200 OK |
| TRACE | Echo the request back for diagnostics | Yes | Yes | 200 OK |
| CONNECT | Open a tunnel, e.g. HTTPS via a proxy | No | No | 200 OK |
說明
- 「安全」指方法不會改變伺服器狀態:GET、HEAD、OPTIONS 與 TRACE 是僅有的四種安全方法。
- 「冪等」指重複呼叫與呼叫一次結果相同:PUT、DELETE、GET 符合;POST 與 PATCH 不符合。
- 當路由不接受某個方法時,伺服器會回傳 405 Method Not Allowed,通常還帶 Allow 回應標頭。
常見問題
- GET 和 POST 有什麼區別?
- GET 只讀取資源、沒有副作用,可安全重複;參數放在 URL 裡。POST 用於建立資源或觸發動作,可能改變狀態,不應盲目重複提交。
- 「安全」的 HTTP 方法是什麼意思?
- 安全方法不會修改伺服器狀態,因此呼叫沒有風險。GET、HEAD、OPTIONS、TRACE 是安全的;POST、PUT、PATCH、DELETE 不安全。
- PUT 和 PATCH 有什麼區別?
- PUT 用送出的整個內容替換資源;PATCH 只對部分欄位做局部修改。PUT 冪等,重複呼叫結果相同;PATCH 一般不冪等。
- HEAD 方法有什麼用?
- HEAD 與 GET 類似,但不回傳回應本文。適合用來檢查資源是否存在、大小或回應標頭,而不必下載完整內容。