1. 程式人生 > >淺談http協議六種請求方法,get、head、put、delete、post、options區別

淺談http協議六種請求方法,get、head、put、delete、post、options區別

原帖:https://www.cnblogs.com/wei-hj/p/7859707.html

標準Http協議支援六種請求方法,即:

1、GET

2、POST

3、PUT

4、Delete

5、HEAD

6、Options

但其實我們大部分情況下只用到了GET和POST。如果想設計一個符合RESTful規範的web應用程式,則這六種方法都會用到。不過即使暫時不想涉及REST,瞭解這六種方法的本質仍然是很有作用的。大家將會發現,原來web也是很簡潔明瞭的。下面依次說明這六種方法。

1,GET:GET可以說是最常見的了,它本質就是傳送一個請求來取得伺服器上的某一資源。資源通過一組HTTP頭和呈現據(如HTML文字,或者圖片或者視訊等)返回給客戶端。GET請求中,永遠不會包含呈現資料。

2,HEAD:HEAD和GET本質是一樣的,區別在於HEAD不含有呈現資料,而僅僅是HTTP頭資訊。有的人可能覺得這個方法沒什麼用,其實不是這樣的。想象一個業務情景:欲判斷某個資源是否存在,我們通常使用GET,但這裡用HEAD則意義更加明確。

3,PUT:這個方法比較少見。HTML表單也不支援這個。本質上來講, PUT和POST極為相似,都是向伺服器傳送資料,但它們之間有一個重要區別,PUT通常指定了資源的存放位置,而POST則沒有,POST的資料存放位置由伺服器自己決定。
舉個例子:如一個用於提交博文的URL,/addBlog。如果用PUT,則提交的URL會是像這樣的”/addBlog/abc123”,其中abc123就是這個博文的地址。而如果用POST,則這個地址會在提交後由伺服器告知客戶端。目前大部分部落格都是這樣的。顯然,PUT和POST用途是不一樣的。具體用哪個還取決於當前的業務場景。

4,DELETE:刪除某一個資源。基本上這個也很少見,不過還是有一些地方比如amazon的S3雲服務裡面就用的這個方法來刪除資源。

5,POST:向伺服器提交資料。這個方法用途廣泛,幾乎目前所有的提交操作都是靠這個完成。

6,OPTIONS:這個方法很有趣,但極少使用。它用於獲取當前URL所支援的方法。若請求成功,則它會在HTTP頭中包含一個名為“Allow”的頭,值是所支援的方法,如“GET, POST”。

其實還有一個 TRACE方法,不過這個基本上不會用到,這裡就不介紹了。

以上的六種方法,我們可以跟資料庫的CRUD增刪改查操作對應起來: CREATE :PUT READ:GET UPDATE:POST DELETE:DELETE 這樣一來就實現了HTTP和資料庫操作(其實不光是資料庫,任何資料如檔案圖表都是這樣)的完美統一,這也是REST的精髓之一