前言
本文為〈HTTP - MDN Web docs〉的學習筆記。
請求方法
HTTP 定義了一組請求方法,以指示要對給定資源執行的所需操作。儘管它們也可以是名詞,但這些請求方法有時也稱為 HTTP 動詞。每個方法都實現了不同的語義,一些方法則共享了一些共有的功能:例如,請求方法可以是安全的、冪等的或可快取的。
GET
GET 方法請求指定資源的表示形式。使用 GET 請求應僅檢索資料。
特性 |
是否 |
要求有 body |
不是 |
成功的回應有 body |
是 |
安全的 |
是 |
冪等的 |
是 |
可快取的 |
是 |
允許 HTML 格式 |
是 |
語法:
HEAD
HEAD 方法請求的響應與 GET 請求的響應相同,但不是響應主體。
特性 |
是否 |
要求有 body |
不是 |
成功的回應有 body |
不是 |
安全的 |
是 |
冪等的 |
是 |
可快取的 |
是 |
允許 HTML 格式 |
不是 |
語法:
POST
POST 方法用於將實體提交給指定的資源,通常會導致狀態更改或對服務器產生副作用。
特性 |
是否 |
要求有 body |
是 |
成功的回應有 body |
是 |
安全的 |
不是 |
冪等的 |
不是 |
可快取的 |
僅包括最新訊息 |
允許 HTML 格式 |
是 |
語法:
PUT
PUT 方法用來創建新資源,或用來替換目標資源。
特性 |
是否 |
要求有 body |
是 |
成功的回應有 body |
不是 |
安全的 |
不是 |
冪等的 |
是 |
可快取的 |
不是 |
允許 HTML 格式 |
不是 |
語法:
1
| PUT /new.html HTTP / 1.1
|
DELETE
DELETE 方法刪除指定的資源。
特性 |
是否 |
要求有 body |
或許 |
成功的回應有 body |
或許 |
安全的 |
不是 |
冪等的 |
是 |
可快取的 |
不是 |
允許 HTML 格式 |
不是 |
語法:
1
| DELETE /file.html HTTP/1.1
|
CONNECT
CONNECT 方法與請求的資源進行雙向通訊,它可以用來打開通道。
特性 |
是否 |
要求有 body |
不是 |
成功的回應有 body |
是 |
安全的 |
不是 |
冪等的 |
不是 |
可快取的 |
不是 |
允許 HTML 格式 |
不是 |
1
| CONNECT www.example.com:443 HTTP/1.1
|
OPTIONS
OPTIONS 方法用於描述目標資源的通訊選項。
特性 |
是否 |
要求有 body |
不是 |
成功的回應有 body |
是 |
安全的 |
是 |
冪等的 |
是 |
可快取的 |
不是 |
允許 HTML 格式 |
不是 |
1 2
| OPTIONS /index.html HTTP/1.1 OPTIONS * HTTP/1.1
|
TRACE
TRACE 方法沿到目標資源的路徑執行消息環回測試。
特性 |
是否 |
要求有 body |
不是 |
成功的回應有 body |
不是 |
安全的 |
不是 |
冪等的 |
是 |
可快取的 |
不是 |
允許 HTML 格式 |
不是 |
PATCH
PATCH 方法用於對資源進行部分修改。
特性 |
是否 |
要求有 body |
是 |
成功的回應有 body |
是 |
安全的 |
不是 |
冪等的 |
不是 |
可快取的 |
不是 |
允許 HTML 格式 |
不是 |
1
| PATCH /file.txt HTTP/1.1
|
術語
安全的
如果 HTTP 方法不會更改服務器的狀態,則它是安全的。換句話說,如果方法只是讀取,則它是安全的,像是:GET、HEAD 和 OPTIONS 方法。
1
| GET /pageX.html HTTP/1.1
|
1
| POST /pageX.html HTTP/1.1
|
- DELETE 方法是不安全的,可能會更改伺服器狀態:
1
| DELETE /idX/delete HTTP/1.1
|
冪等的
如果可以在使服務器處於相同狀態的情況下,連續執行一次或多次相同的請求而產生相同的效果,則此 HTTP 方法稱作是「冪等的」(idempotence)。換句話說,冪等方法不應有任何副作用(保留統計訊息除外)。冪等的方法有:GET、HEAD、PUT 和 DELETE 方法等。
- GET 方法是冪等的。連續調用多次,客戶端將獲得相同的結果:
1 2 3 4
| GET /pageX HTTP/1.1 GET /pageX HTTP/1.1 GET /pageX HTTP/1.1 GET /pageX HTTP/1.1
|
- POST 方法則不是冪等的;如果多次調用,它將添加幾行:
1 2 3
| POST /add_row HTTP/1.1 POST /add_row HTTP/1.1 -> Adds a 2nd row POST /add_row HTTP/1.1 -> Adds a 3rd row
|
- DELETE 方法是冪等的。連續調用多次,客戶端將獲得相同的結果,即使返回的狀態代碼可能不一樣:
1 2 3
| DELETE /idX/delete HTTP/1.1 -> Returns 200 if idX exists DELETE /idX/delete HTTP/1.1 -> Returns 404 as it just got deleted DELETE /idX/delete HTTP/1.1 -> Returns 404
|
可快取的
可快取的響應是可以快取的 HTTP 響應,將其存儲以供以後檢索和使用,從而將新請求保存到服務器。請求中使用的方法本身是可快取的,即 GET 或 HEAD 方法。而一些響應的狀態碼也可以被快取,像是 200 等。
技術指標