HTTP協議中POST、GET、HEAD、PUT等請求方法以及一些常見錯誤
請求方法是請求一定的Web頁面的程式或用於特定的URL。可選用下列幾種:
GET: 請求指定的頁面資訊,並返回實體主體。
HEAD: 只請求頁面的首部。
POST: 請求伺服器接受所指定的文件作為對所標識的URI的新的從屬實體。
PUT: 從客戶端向伺服器傳送的資料取代指定的文件的內容。
DELETE: 請求伺服器刪除指定的頁面。
OPTIONS: 允許客戶端檢視伺服器的效能。
TRACE: 請求伺服器在響應中的實體主體部分返回所得到的內容。
PATCH: 實體中包含一個表,表中說明與該URI所表示的原內容的區別。
MOVE: 請求伺服器將指定的頁面移至另一個網路地址。
COPY: 請求伺服器將指定的頁面拷貝至另一個網路地址。
LINK: 請求伺服器建立連結關係。
UNLINK: 斷開連結關係。
WRAPPED: 允許客戶端傳送經過封裝的請求。
Extension-mothed:在不改動協議的前提下,可增加另外的方法。
當伺服器響應時,其狀態行的資訊為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”。
其實還有一個TRACE方法,不過這個基本上不會用到,這裡就不介紹了。以上的六種方法,我們可以跟資料庫的CRUD增刪改查操作對應起來:
CREATE :PUT
READ:GET
UPDATE:POST
DELETE:DELETE
這樣一來就實現了HTTP和資料庫操作(其實不光是資料庫,任何資料如檔案圖表都是這樣)的完美統一,這也是REST的精髓之一。
相關文章
- 解析HTTP協議六種請求方法,get,head,put,delete,post有什麼區別HTTP協議delete
- 介面請求(get、post、head等)詳解
- 介面請求 (get、post、head 等) 詳解
- 簡述六種請求方法,get、head、put、delete、post、options區別delete
- SpringMVC中如何傳送GET請求、POST請求、PUT請求、DELETE請求。SpringMVCdelete
- http請求中get和post方法的區別HTTP
- HTTP協議中PUT和POST使用區別HTTP協議
- SQL Server儲存過程模擬HTTP請求POST和GET協議SQLServer儲存過程HTTP協議
- Java Http Get Post 請求工具類JavaHTTP
- 封裝 PHP curl http 請求 (全) Composer 安裝 httpbuilder,支援 GET,POST,PUT,DELETE封裝PHPHTTPUIdelete
- 前端常見的請求資料彙總(GET POST)前端
- HEAD請求方法引起方法未定義的錯誤
- Servlet中request請求Get和Post方法以及亂碼解決Servlet
- Python中get、post請求詳解(HTTP請求頭、狀態碼)PythonHTTP
- HTTP 協議六種請求方法HTTP協議
- Java用HttpClient3傳送http/https協議get/post請求,傳送map,jsoJavaHTTPclient協議JS
- http請求之get和post的區別HTTP
- GoWeb開發_Iris框架講解(二):Get、Post、Put等請求及資料返回格式GoWeb框架
- 淺談HTTP中GET和POST請求方式的區別HTTP
- HTTP協議 GET和POST的左右互博HTTP協議
- HTTP協議類POST 和GET的區別HTTP協議
- http協議中,“get”和“post”的區別是什麼HTTP協議
- Android 傳送HTTP GET POST 請求以及通過 MultipartEntityBuilder 上傳檔案(二)AndroidHTTPUI
- What is the difference Put and Post and Get?
- 優雅地使用GET和POST請求方法
- Java用HttpClient3傳送http/https協議get/post請求,傳送map,json,xml,txt資料JavaHTTPclient協議JSONXML
- HTTP協議如何發起請求HTTP協議
- HTTP 405 的錯誤提示:訊息 JSP 只允許 GET、POST 或 HEAD。Jasper 還允許 OPTIONS 的解決方法HTTPJS
- 網路通訊5:執行HTTP的GET/POST請求HTTP
- POST與GET請求區別
- 介面自動化測試框架--http請求的get、post方法的實現框架HTTP
- 聊聊 HTTP 常見的請求方式HTTP
- vue axios資料請求get、post方法的使用VueiOS
- Http請求get與post請求方式的各種相關面試總結HTTP面試
- vue 發起get請求和post請求Vue
- get請求和post請求的區別
- 模擬資料支援post, put, delete等http方式deleteHTTP
- Golang:使用go-resty/resty傳送http請求get和postGolangRESTHTTP
- GET和POST兩種基本請求方法的區別