天天看點

HTTP中的九個請求方法

1.CONNECT

在 HTTP 協定中,CONNECT 方法可以開啟一個用戶端與所請求資源之間的雙向溝通的通道。它可以用來建立隧道(tunnel)。

例如,CONNECT 可以用來通路采用了 SSL (HTTPS) 協定的站點。用戶端要求代理伺服器将 TCP 連接配接作為通往目的主機隧道。之後該伺服器會代替用戶端與目的主機建立連接配接。連接配接建立好之後,代理伺服器會面向用戶端發送或接收 TCP 消息流。

CONNECT 是一個應用範圍為點到點的方法。

2.DELETE

HTTP DELETE 請求方法用于删除指定的資源。

如果 DELETE 方法成功執行,那麼可能會有以下幾種狀态碼:

1.狀态碼 202 (Accepted) 表示請求的操作可能會成功執行,但是尚未開始執行。

2.狀态碼 204 (No Content) 表示操作已執行,但是無進一步的相關資訊。

3.狀态碼 200 (OK) 表示操作已執行,并且響應中提供了相關狀态的描述資訊。

3.GET

HTTP GET 方法請求指定的資源。使用 GET 的請求應該隻用于擷取資料。

4.HEAD

HTTP HEAD 方法 請求資源的頭部資訊, 并且這些頭部與 HTTP GET 方法請求時傳回的一緻. 該請求方法的一個使用場景是在下載下傳一個大檔案前先擷取其大小再決定是否要下載下傳, 以此可以節約帶寬資源.

HEAD 方法的響應不應包含響應正文. 即使包含了正文也必須忽略掉. 雖然描述正文資訊的 entity headers, 例如 Content-Length 可能會包含在響應中, 但它們并不是用來描述 HEAD 響應本身的, 而是用來描述同樣情況下的 GET 請求應該傳回的響應.

如果 HEAD 請求的結果顯示在上一次 GET 請求後緩存的資源已經過期了, 那麼該緩存會失效, 即使 GET 請求已經完成.

5.OPTIONS

HTTP 的 OPTIONS 方法 用于擷取目的資源所支援的通信選項。用戶端可以對特定的 URL 使用 OPTIONS 方法,也可以對整站(通過将 URL 設定為“*”)使用該方法。

可以使用 OPTIONS 方法對伺服器發起請求,以檢測伺服器支援哪些 HTTP 方法:

curl -X OPTIONS http://example.org -i           

複制

響應封包包含一個 Allow 首部字段,該字段的值表明了伺服器支援的所有 HTTP 方法:

HTTP/1.1 200 OK
Allow: OPTIONS, GET, HEAD, POST
Cache-Control: max-age=604800
Date: Thu, 13 Oct 2016 11:45:00 GMT
Expires: Thu, 20 Oct 2016 11:45:00 GMT
Server: EOS (lax004/2813)
x-ec-custom-error: 1
Content-Length: 0           

複制

6.PATCH

在HTTP協定中,請求方法 PATCH 用于對資源進行部分修改。

在HTTP協定中, PUT 方法已經被用來表示對資源進行整體覆寫, 而 POST 方法則沒有對标準的更新檔格式的提供支援。不同于 PUT 方法,而與 POST 方法類似,PATCH 方法是非幂等的,這就意味着連續多個的相同請求會産生不同的效果。

要判斷一台伺服器是否支援 PATCH 方法,那麼就看它是否将其添加到了響應首部 Allow 或者 Access-Control-Allow-Methods (在跨域通路的場合,CORS)的方法清單中 。

另外一個支援 PATCH 方法的隐含迹象是 Accept-Patch 首部的出現,這個首部明确了伺服器端可以接受的更新檔檔案的格式。

7.POST

HTTP POST 方法 發送資料給伺服器. 請求主體的類型由 Content-Type 首部指定.

PUT 和POST方法的差別是,PUT方法是幂等的:連續調用一次或者多次的效果相同(無副作用)。連續調用同一個POST可能會帶來額外的影響,比如多次送出訂單。

一個 POST 請求通常是通過 HTML 表單發送, 并傳回伺服器的修改結果. 在這種情況下, content type 是通過在 元素中設定正确的 enctype 屬性, 或是在 和 元素中設定 formenctype 屬性來選擇的:

1.application/x-www-form-urlencoded: 資料被編碼成以 ‘&’ 分隔的鍵-值對, 同時以 ‘=’ 分隔鍵和值. 非字母或數字的字元會被 percent-encoding: 這也就是為什麼這種類型不支援二進制資料(應使用 multipart/form-data 代替).

2.multipart/form-data

3.text/plain

當 POST 請求是通過除 HTML 表單之外的方式發送時, 例如使用 XMLHttpRequest, 那麼請求主體可以是任何類型.按HTTP 1.1規範中描述,POST為了以統一的方法來涵蓋以下功能:

1.注釋已有的資源

2.在公告闆,新聞討論區,郵件清單或類似的文章組中釋出消息;

3.通過注冊新增使用者;

4.向資料處理程式提供一批資料,例如送出一個表單;

5.通過追加操作,擴充資料庫資料.

8.PUT

HTTP PUT 請求方法使用請求中的負載建立或者替換目标資源。

PUT 與 POST 方法的差別在于,PUT方法是幂等的:調用一次與連續調用多次是等價的(即沒有副作用),而連續調用多次POST方法可能會有副作用,比如将一個訂單重複送出多次。

9.TRACE

HTTP TRACE 方法 實作沿通向目标資源的路徑的消息環回(loop-back)測試 ,提供了一種實用的 debug 機制。

請求的最終接收者應當原樣反射(reflect)它接收到的消息,除了以下字段部分,作為一個Content-Type 為 message/http 的200(OK)響應的消息的主體(body)傳回給用戶端 。

最終接收者是指初始(origin)伺服器,或者第一個接收到 Max-Forwards 值為 0的請求的伺服器。