http post,get,put,delete区别(收集整理)
摘要:
這篇文章想從restful角度來(lái)分析下http的方法get,post,put,delete的區(qū)別。先暫時(shí)收集下資料~~~
一 Http 規(guī)范中的get與post
根據(jù)?HTTP?規(guī)范,GET?用于信息獲取,而且應(yīng)該是安全的和冪等的。所謂安全的意味著該操作用于獲取信息而非修改信息。換句話說(shuō),GET?請(qǐng)求一般不應(yīng)產(chǎn)生副作用。冪等的意味著對(duì)同一?URL?的多個(gè)請(qǐng)求應(yīng)該返回同樣的結(jié)果。完整的定義并不像看起來(lái)那樣嚴(yán)格。從根本上講,其目標(biāo)是當(dāng)用戶打開(kāi)一個(gè)鏈接時(shí),她可以確信從自身的角度來(lái)看沒(méi)有改變資源。?比如,新聞?wù)军c(diǎn)的頭版不斷更新。雖然第二次請(qǐng)求會(huì)返回不同的一批新聞,該操作仍然被認(rèn)為是安全的和冪等的,因?yàn)樗偸欠祷禺?dāng)前的新聞。
根據(jù)?HTTP?規(guī)范,POST?表示可能改變服務(wù)器上的資源的請(qǐng)求。仍然以新聞?wù)军c(diǎn)為例,讀者對(duì)文章的修改應(yīng)該通過(guò)?POST?請(qǐng)求實(shí)現(xiàn),因?yàn)樵谧⒔馓峤恢笳军c(diǎn)已經(jīng)更新了文章。
二 Get 與Post的功能
Get:用來(lái)向服務(wù)器申請(qǐng)請(qǐng)求URI所指定資源的信息。如果請(qǐng)求URI只是一個(gè)數(shù)據(jù)產(chǎn)生過(guò)程,那么最終要在響應(yīng)實(shí)體中返回的是處理過(guò)程的結(jié)果所指向的資源,而不是處理過(guò)程的描述。
Post:用來(lái)向目的服務(wù)器發(fā)出請(qǐng)求,要求它接受被附在請(qǐng)求后的實(shí)體,并把它當(dāng)作請(qǐng)求隊(duì)列中請(qǐng)求URI所指定資源的附加新子項(xiàng),Post被設(shè)計(jì)成用統(tǒng)一的方法實(shí)現(xiàn)下列功能:1. ? 對(duì)現(xiàn)有資源的解釋2. ? 向電子公告欄、新聞組、郵件列表或類似討論組發(fā)信息。3. ? 提交數(shù)據(jù)塊?4. ? 通過(guò)附加操作來(lái)擴(kuò)展數(shù)據(jù)庫(kù)
?從從上面描述可以看出,Get是向服務(wù)器發(fā)索取數(shù)據(jù)的一種請(qǐng)求;而Post是向服務(wù)器提交數(shù)據(jù)的一種請(qǐng)求,要提交的數(shù)據(jù)位于信息頭后面的實(shí)體中。
?三 HTTP請(qǐng)求:get與post方法的區(qū)別
相同點(diǎn):
Get與post請(qǐng)求的相應(yīng)是可緩存的;
備注:如果post有cache-control或者expires頭域指示其相應(yīng)不可緩存
?
不同點(diǎn):
1. ?功能不同--Get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù)
2. ?參數(shù)存放位置不同--get請(qǐng)求提交的數(shù)據(jù)放置在HTTP請(qǐng)求協(xié)議頭中,而post提交的數(shù)據(jù)則放在實(shí)體數(shù)據(jù)數(shù)據(jù)中。Get是把參數(shù)數(shù)據(jù)隊(duì)列加到提交表單的action屬性所指定的URL中,值和表單中各個(gè)字段一一對(duì)應(yīng),在URL中可以看到,post是通過(guò)HTTP?post機(jī)制,將表單內(nèi)各個(gè)字段與其內(nèi)容放置在html?header內(nèi)一起傳送到action屬性所指的URL地址,用戶看不到這個(gè)過(guò)程;get安全性非常低,post安全性較高。
3. ?傳輸數(shù)據(jù)量閾值不同--get傳送的數(shù)據(jù)量較小,不能大于2kb;post傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制的。GET方法由于受到URL長(zhǎng)度的限制,只能傳遞大約1024字節(jié);POST傳輸?shù)臄?shù)據(jù)量大,可以達(dá)到2M,而根據(jù)微軟方面的說(shuō)法,微軟對(duì)用?Request.Form()?可接收的最大數(shù)據(jù)有限制,IIS?4?中為?80?KB?字節(jié),IIS?5?中為?100?KB?字節(jié);
4. ?安全性不同--get安全性非常低;post安全性較高,這點(diǎn)有點(diǎn)扯淡,post也就安全那么一點(diǎn)點(diǎn),隨便抓個(gè)包,或者瀏覽器調(diào)試工具都能看到,除非用ssl,或者加密。
6. ?form表單功能不同--在form提交的時(shí)候,如果不指定method,則默認(rèn)為get請(qǐng)求,form中提交的數(shù)據(jù)將會(huì)附加在url之后,以?與URL分開(kāi)。字母數(shù)字字符原樣發(fā)送,但空格轉(zhuǎn)換為“+”號(hào),其它符號(hào)轉(zhuǎn)換為%xx,其中xx為該符號(hào)為16進(jìn)制表示的ASCII(或ISO?Latin-1)值;獲取表單數(shù)據(jù)時(shí),
ASP中,get方式的提交需要用Request.QueryString來(lái)取得變量的值,而post方式提交時(shí),必須通過(guò)Request.Form來(lái)訪問(wèn)提交的內(nèi)容
Java中,get方式的提交需要用Request.getUrl來(lái)取得變量的值,而post方式提交時(shí),必須通過(guò)Request.getParameter來(lái)訪問(wèn)提交的內(nèi)容
7. ?SOAP協(xié)議--SOAP是依賴于HTTP?POST模式實(shí)現(xiàn)的;
四 Restful中g(shù)et,post,put,delete
?
?
五、graphql
現(xiàn)在 graphql 更加適合于新的項(xiàng)目,因?yàn)榻涌诟营?dú)立,部分簡(jiǎn)單的CRUD操作,只要數(shù)據(jù)庫(kù)建好,前端和后端甚至不需要進(jìn)行接口商定,通過(guò)graphql 就可以直接進(jìn)行數(shù)據(jù)庫(kù)的操作。
但是如果涉及復(fù)雜的業(yè)務(wù)邏輯,還是需要后端加入。
?
?
?
備注:本文為網(wǎng)上資料整理,如在引用中侵權(quán),請(qǐng)聯(lián)系我~~~謝謝
轉(zhuǎn)載于:https://www.cnblogs.com/huxiaoyun90/p/3384999.html
總結(jié)
以上是生活随笔為你收集整理的http post,get,put,delete区别(收集整理)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: sqlserver中查找长时间未提交事务
- 下一篇: 分块读取Blob字段数据(Oracle)