4.1 HTTP方法列表
HTTP 請求中的第一個詞是方法名稱。甚至與 Java 中的調用方法有些類比。HTTP 請求中的方法定義了要對資源執行的基本操作。
什麼樣的資源?問題是,在萬維網誕生之初,服務器只是分別存儲 HTML 文件,請求是針對這樣的文件,並描述了需要對資源/文件執行的一些操作。
HTTP 標準指定了以下方法:
# | 方法 | 描述 |
---|---|---|
1個 | 得到 | 用於查詢指定資源的內容。 |
2個 | 郵政 | 用於將數據從客戶端傳輸到服務器。更改服務器上資源的狀態。 |
3個 | 放 | 用於將數據從客戶端傳輸到服務器。在服務器上創建新資源。 |
4個 | 刪除 | 刪除服務器上的指定資源。 |
5個 | 頭 | 類似於 GET,但沒有響應主體。需要獲取響應標頭 |
6個 | 選項 | 向服務器請求指定資源的支持方法列表。 |
7 | 痕跡 | 服務方式。允許您查明請求是否被它經過的服務器更改。 |
8個 | 連接 | 服務方式。用於建立安全連接。 |
4.2 獲取方法
GET 方法是最流行的 HTTP 方法。這是瀏覽器在向服務器發送下一頁請求時調用的內容。
例如,如果您在瀏覽器中訪問了鏈接http://codegym.cc/path/resource?param1=value1¶m2=value2,那麼瀏覽器將向 CodeGym 服務器發送一個 HTTP 請求,該請求將以此起始行開頭:
GET /path/resource?param1=value1¶m2=value2 HTTP/1.1
結果,服務器必須向瀏覽器發送 HTTP 響應,其中寫入請求的狀態,並發送請求的資源。
假設多次調用 GET 方法不會改變服務器的狀態,並且服務器每次都必須返回相同的響應。因此,該協議對對象緩存有一個棘手的控制。
首先,使用 GET 請求接收的資源,瀏覽器可以自行決定在其端緩存(有細微差別)。
其次,當向服務器發送請求時,你可以指定一個特殊的頭部If-Modified-Since
和date
. 如果請求的資源/文檔自指定日期以來發生了更改,則服務器將發送它。如果沒有改變,則資源體不被傳遞。假定它緩存在客戶端上。
一直使用頁面緩存(GET 請求),所以我建議您調查一下這個問題。
4.3 POST 和 PUT 方法
POST 方法用於更新服務器上的資源。例如,當您將圖像上傳到服務器時,您的瀏覽器會發送一個 POST 請求。
考慮將以此起始行開頭的 HTTP 請求:
POST /path/resource?param1=value1¶m2=value2 HTTP/1.1
headers…
<request body>
結果,服務器必須向瀏覽器發送 HTTP 響應,其中將寫入請求的狀態,並發送修改後的資源。多次調用 POST 方法會改變服務器的狀態,並且服務器每次可能返回不同的響應。
GET和POST是網絡上最常見的兩種請求。為了讓您更容易記住這些方法的工作原理,請考慮下表:
得到 | 郵政 | 放 | |
---|---|---|---|
要求 | 僅限網址 | URL 和請求正文 | URL 和請求正文 |
回答 | 響應代碼和正文 | 響應代碼和正文 | 響應碼 |
您可以在鏈接中閱讀有關 POST 請求的更多信息。
4.4 刪除方法
最後,有關DELETE 方法的信息。這裡的一切都很簡單。
比如我們要刪除服務器上的某個資源。我們向他發送請求,例如:
DELETE /path/resource?param1=value1¶m2=value2 HTTP/1.1
收到這個請求後,服務器將刪除指定的資源。當然,除非您有權刪除它。
GO TO FULL VERSION