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://blog.csdn.net/qq_26291823/article/details/51900422

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450292.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450292.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450292.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java面試題文檔(QA)

– 基礎篇 1、 Java語言有哪些特點2、面向對象和面向過程的區別3 、八種基本數據類型的大小,以及他們的封裝類4、標識符的命名規則。5、instanceof 關鍵字的作用6、Java自動裝箱與拆箱7、 重載和重寫的區別8、 equals與的區別9、 Hashcode的作用10、String、String …

第四次軟件工程作業

關于 石墨文檔客戶端 的案例分析 作業地址: https://edu.cnblogs.com/campus/nenu/2016CS/homework/2505 第一部分 調研, 評測 1.下載并使用,按照描述的bug定義,找3~5個功能性的比較嚴重的bug。請用專業的語言描述(每個…

深入剖析C++中的string類

一,C語言的字符串 在C語言里,對字符串的處理一項都是一件比較痛苦的事情,因為通常在實現字符串的操作的時候都會用到最不容易駕馭的類型——指針。 比如下面這個例子: //example 1: char str[12] "Hello"; char *…

Apple System: Error: ENFILE: file table overflow

2019獨角獸企業重金招聘Python工程師標準>>> 在MAC上跑nodejs,遇到了一個問題:file table overflow 主要意思就是說文件打開太多了,超過了限制,產生這個問題主要是蘋果操作系統的限制。 echo kern.maxfiles65536 | sud…

springboot的緩存技術

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 我門知道一個程序的瓶頸在于數據庫,我門也知道內存的速度是大大快于硬盤的速度的。當我門需要重復的獲取相同的數據的時候&a…

深度優先遍歷解決連通域求解問題-python實現

問題描述 在一個矩形網格中每一個格子的顏色或者為白色或者為黑色。任意或上、或下、或左、或右相鄰同為黑色的格子組成一個家族。家族中所有格子的數量反映家族的大小。要求找出最大家族的家族大小(組成最大家族的格子的數量)并統計出哪些點屬于哪一族。…

字符串進階

C風格字符串 1、字符串是用字符型數組存儲的,字符串要求其尾部以’\0’作為結束標志。如: char string[ ]”C programming language”; 用sizeof來測string長度為25個字節,而實際串本身長度(含空格)為24個字節,多出來的一個就是…

flask上傳excel文件,無須存儲,直接讀取內容

運行環境python3.6 import xlrd from flask import Flask, requestapp Flask(__name__)app.route("/", methods[POST, GET]) def filelist1():print(request.files)file request.files[file]print(file, type(file), file)print(file.filename) # 打印文件名f …

分布式 ID的 9 種生成方式

一、為什么要用分布式 ID? 在說分布式 ID 的具體實現之前,我們來簡單分析一下為什么用分布式 ID?分布式 ID 應該滿足哪些特征? 1、什么是分布式 ID? 拿 MySQL 數據庫舉個栗子: 在我們業務數據量不大的時…

spring boot Redis集成—RedisTemplate

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 Spring boot 基于Spring, Redis集成與Spring大同小異。 文章示例代碼均以前篇筆記為基礎增加修改,直接上代碼:…

QtCreator無法編輯源文件

在Qt Creator中新建工程,添加現有C源文件,有的源文件可以編輯,有的源文件編輯不了,發現無法編輯的源文件有一個共同特點,即其中都包含中文,且中文出現亂碼,于是,點擊Qt Creator菜單欄…

Unicode簡介和使用

一、Unicode簡介 在第一章中,我已經預告,C語言中在Microsoft Windows程序設計中扮演著重要角色的任何部分都會講述到,您也許在傳統文字模式程序設計中還尚未遇到過這些問題。寬字符集和Unicode差不多就是這樣的問題。 簡單地說,…

webpack4.x 模塊化淺析-CommonJS

先看下webpack官方文檔中對模塊的描述: 在模塊化編程中,開發者將程序分解成離散功能塊(discrete chunks of functionality),并稱之為模塊。每個模塊具有比完整程序更小的接觸面,使得校驗、調試、測試輕而易舉。 精心編寫的模塊提供…

設計模式--抽象工廠(個人筆記)

一、抽象工廠的應用場景以及優缺點 1 應用場景: 如果系統需要多套的代碼解決方案,并且每套的代碼解決方案中又有很多相互關聯的產品類型,并且在系統中我們可以相互替換的使用一套產品的時候可以使用該模式,客戶端不需要依賴具體的…

利用阿里云OSS對文件進行存儲,上傳等操作

--pom.xml加入阿里OSS存儲依賴 <!--阿里云OSS存儲--> <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>2.8.3</version> </dependency> --配置阿里云oss相關常量參數 /…

Java并發編程之ThreadGroup

ThreadGroup是Java提供的一種對線程進行分組管理的手段&#xff0c;可以對所有線程以組為單位進行操作&#xff0c;如設置優先級、守護線程等。 線程組也有父子的概念&#xff0c;如下圖&#xff1a; 線程組的創建 1 public class ThreadGroupCreator {2 3 public static v…

springboot 緩存ehcache的簡單使用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 步驟&#xff1a; 1. pom文件中加 maven jar包&#xff1a; <!-- ehcache 緩存 --><dependency><groupId>net.sf.eh…

Spring boot + mybatis plus 快速構建項目,生成基本業務操作代碼。

---進行業務建表&#xff0c;這邊根據個人業務分析&#xff0c;不具體操作 --加入mybatis plus pom依賴 <!-- mybatis-plus 3.0.5--> <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId>&l…

給手機瀏覽器減負 輕裝上陣才能速度制勝

隨著手機瀏覽器的發展&#xff0c;瀏覽器已經變得臃腫不堪&#xff0c;各種“功能”系于一身&#xff0c;有廣告、社區、樂園等等&#xff0c;我們真的需要它們嗎&#xff1f;如何才能讓瀏覽器做到輕裝上陣&#xff0c;又能高效滿足我們需求呢&#xff1f; 過多“功能”的瀏覽器…

653. Two Sum IV - Input is a BST

題目來源&#xff1a; 自我感覺難度/真實難度&#xff1a; 題意&#xff1a; 分析&#xff1a; 自己的代碼&#xff1a; class Solution(object):def findTarget(self, root, k):""":type root: TreeNode:type k: int:rtype: bool"""Allself.InO…