HTTP協議中POST、GET、HEAD、PUT等請求方法以及一些常見錯誤

HTTP協議中POST、GET、HEAD、PUT等請求方法以及一些常見錯誤     html

請求方法是請求必定的Web頁面的程序或用於特定的URL。可選用下列幾種:
GET: 請求指定的頁面信息,並返回實體主體。
HEAD: 只請求頁面的首部。
POST: 請求服務器接受所指定的文檔做爲對所標識的URI的新的從屬實體。
PUT: 從客戶端向服務器傳送的數據取代指定的文檔的內容。
DELETE: 請求服務器刪除指定的頁面。
OPTIONS: 容許客戶端查看服務器的性能。
TRACE: 請求服務器在響應中的實體主體部分返回所獲得的內容。
PATCH: 實體中包含一個表,表中說明與該URI所表示的原內容的區別。
MOVE: 請求服務器將指定的頁面移至另外一個網絡地址。
COPY: 請求服務器將指定的頁面拷貝至另外一個網絡地址。
LINK: 請求服務器創建連接關係。
UNLINK: 斷開連接關係。
WRAPPED: 容許客戶端發送通過封裝的請求。
Extension-mothed:在不改動協議的前提下,可增長另外的方法。 web

當服務器響應時,其狀態行的信息爲HTTP的版本號,狀態碼,及解釋狀態碼的簡單說明。現將5類狀態碼詳細列出:
① 客戶方錯誤
100  繼續
101  交換協議
② 成功
200  OK
201  已建立
202  接收
203  非認證信息
204  無內容
205  重置內容
206  部份內容
③ 重定向
300  多路選擇
301  永久轉移
302  暫時轉移
303  參見其它
304  未修改(Not Modified)
305  使用代理
④ 客戶方錯誤
400  錯誤請求(Bad Request)
401  未認證
402  須要付費
403  禁止(Forbidden)
404  未找到(Not Found)
405  方法不容許
406  不接受
407  須要代理認證
408  請求超時
409  衝突
410  失敗
411  須要長度
412  條件失敗
413  請求實體太大
414  請求URI太長
415  不支持媒體類型
⑤ 服務器錯誤
500  服務器內部錯誤
501  未實現(Not Implemented)
502  網關失敗
504  網關超時
505 HTTP版本不支持 數據庫

關於實體頭部的內容還能夠有:
Last Modified :請求文檔的最近修改時間。
Expires :請求文檔的過時時間。
Connect-length:文檔數據的長度。
WWW-authenricate:通知客戶端須要的認證信息。
Connect-encoding :說明有無使用壓縮技術。
Transfer-encoding :說明採用的編碼變換類型。 服務器

標準Http協議支持六種請求方法,即: 網絡

0,GET
1,HEAD
2,PUT
3,DELETE
4,POST
5,OPTIONS 性能

但其實咱們大部分狀況下只用到了GET和POST。若是想設計一個符合RESTful規範的web應用程序,則這六種方法都會用到。不過即便暫時不想涉及 REST,瞭解這六種方法的本質仍然是頗有做用的。你們將會發現,原來web也是很簡潔明瞭的。下面依次說明這六種方法。 編碼

0,GET:GET能夠說是最多見的了,它本質就是發送一個請求來取得服務器上的某一資源。資源經過一組HTTP頭和呈現數據(如HTML文本,或者圖片或者視頻等)返回給客戶端。GET請求中,永遠不會包含呈現數據。
1,HEAD:HEAD和GET本質是同樣的,區別在於HEAD不含有呈現數據,而僅僅是HTTP頭信息。有的人可能以爲這個方法沒什麼用,其實不是這樣的。想象一個業務情景:欲判斷某個資源是否存在,咱們一般使用GET,但這裏用HEAD則意義更加明確。
2,PUT:這個方法比較少見。HTML表單也不支持這個。本質上來說, PUT和POST極爲類似,都是向服務器發送數據,但它們之間有一個重要區別,PUT一般指定了資源的存放位置,而POST則沒有,POST的數據存放位 置由服務器本身決定。舉個例子:如一個用於提交博文的URL,/addBlog。若是用PUT,則提交的URL會是像這樣的」/addBlog /abc123」,其中abc123就是這個博文的地址。而若是用POST,則這個地址會在提交後由服務器告知客戶端。目前大部分博客都是這樣的。顯 然,PUT和POST用途是不同的。具體用哪一個還取決於當前的業務場景。
3,DELETE:刪除某一個資源。基本上這個也不多見,不過仍是有一些地方好比amazon的S3雲服務裏面就用的這個方法來刪除資源。
4,POST:向服務器提交數據。這個方法用途普遍,幾乎目前全部的提交操做都是靠這個完成。
5,OPTIONS:這個方法頗有趣,但極少使用。它用於獲取當前URL所支持的方法。若請求成功,則它會在HTTP頭中包含一個名爲「Allow」的頭,值是所支持的方法,如「GET, POST」。 .net

其實還有一個TRACE方法,不過這個基本上不會用到,這裏就不介紹了。以上的六種方法,咱們能夠跟數據庫的CRUD增刪改查操做對應起來: 設計

CREATE :PUT
READ:GET
UPDATE:POST
DELETE:DELETE 代理

這樣一來就實現了HTTP和數據庫操做(其實不光是數據庫,任何數據如文件圖表都是這樣)的完美統一,這也是REST的精髓之一。

http://blog.csdn.net/alextiger0/article/details/5836572

http://chlotte.blog.51cto.com/318402/554758

http://blog.sina.com.cn/s/blog_4c9ba2850100ftsy.html

http://www.hulifeng.com/article/jishu/23.htm

http://wenku.baidu.com/view/8f8f2025ccbff121dd36832e.html    

相關文章
相關標籤/搜索