post 和 put請求方法區(qū)別點(diǎn)簡析

timg.jpg

Http定義了與 服務(wù)器的交互方法,其中除了一般我們用的最多的GET,POST 其實(shí)還有PUT和DELETE

根據(jù)RFC2616標(biāo)準(zhǔn)(現(xiàn)行的HTTP/1.1)其實(shí)還有OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT

簡單地介紹一下吧擦酌。

http 的post 和 get 方法確實(shí)很多俱诸,通俗解釋就是-------

新建一條記錄的話就用post,
更新一條記錄的話就用put.

<POST>

POST 方法被用于請求源服務(wù)器接受請求中的實(shí)體作為請求資源的一個(gè)新的從屬物

POST方法的實(shí)際功能是由服務(wù)器決定的赊舶,并且經(jīng)常依賴于請求URI(Request-URI)睁搭。POST提交的實(shí)體是請求URI的從屬物赶诊,就好像一個(gè)文件從屬于一個(gè)目錄,一篇新聞文章從屬于一個(gè)新聞組园骆,或者一條記錄從屬于一個(gè)數(shù)據(jù)庫舔痪。POST方法執(zhí)行的動(dòng)作可能不會(huì)對請求URI所指的資源起作用。在這種情況下锌唾,200(成功)或者204(沒有內(nèi)容)將是適合的響應(yīng)狀態(tài)锄码,這依賴于響應(yīng)是否包含一個(gè)描述結(jié)果的實(shí)體。如果資源被源服務(wù)器創(chuàng)建鸠珠,響應(yīng)應(yīng)該是201(Created)并且包含一個(gè)實(shí)體巍耗,此實(shí)體描述了請求的狀態(tài)。并且引用了這個(gè)新資源和一個(gè)Location頭域渐排。POST方法的響應(yīng)是不可緩存的炬太。除非響應(yīng)里有合適的Cache-Control或者Expires頭域。然而驯耻,303(見其他)響應(yīng)能被用戶代理利用去獲得可緩存的響應(yīng)亲族。

<PUT>

PUT方法請求服務(wù)器去把請求里的實(shí)體存儲(chǔ)在請求URI(Request-URI)標(biāo)識(shí)下。

如果請求URI(Request-URI)指定的的資源已經(jīng)在源服務(wù)器上存在可缚,那么此請求里的實(shí)體應(yīng)該被當(dāng)作是源服務(wù)器關(guān)于此URI所指定資源實(shí)體的最新修改版本霎迫。如果請求URI(Request-URI)指定的資源不存在,并且此URI被用戶代理定義為一個(gè)新資源帘靡,那么源服務(wù)器就應(yīng)該根據(jù)請求里的實(shí)體創(chuàng)建一個(gè)此URI所標(biāo)識(shí)下的資源知给。如果一個(gè)新的資源被創(chuàng)建了,源服務(wù)器必須能向用戶代理(user agent) 發(fā)送201(已創(chuàng)建)響應(yīng)描姚。如果已存在的資源被改變了涩赢,那么源服務(wù)器應(yīng)該發(fā)送200(Ok)或者204(無內(nèi)容)響應(yīng)。如果資源不能根據(jù)請求URI創(chuàng)建或者改變轩勘,一個(gè)合適的錯(cuò)誤響應(yīng)應(yīng)該給出以反應(yīng)問題的性質(zhì)筒扒。實(shí)體的接收者不能忽略任何它不理解和不能實(shí)現(xiàn)的Content-*(如:Content-Range)頭域,并且必須返回501(沒有被實(shí)現(xiàn))響應(yīng)绊寻。如果請求穿過一個(gè)緩存(cache)花墩,并且此請求URI(Request-URI)指示了一個(gè)或多個(gè)當(dāng)前緩存的實(shí)體,那么這些實(shí)體應(yīng)該被看作是舊的澄步。PUT方法的響應(yīng)是不可緩存的冰蘑。


POST方法和PUT方法請求最根本的區(qū)別是請求URI(Request-URI)的含義不同。POST請求里的URI 指示一個(gè)能處理請求實(shí)體的資源(譯注:此資源可能是一段程序村缸,如jsp 里的servlet) 懂缕。此資源可能是一個(gè)數(shù)據(jù)接收過程,一個(gè)網(wǎng)關(guān)(gateway王凑,注:網(wǎng)關(guān)和代理的區(qū)別是:網(wǎng)關(guān)可以進(jìn)行協(xié)議轉(zhuǎn)換搪柑,而代理不能聋丝,只是起代理的作用,比如緩存服務(wù)器其實(shí)就是一個(gè)代理)工碾,或者一個(gè)單獨(dú)接收注釋的實(shí)體弱睦。對比而言,PUT方法請求里的URI標(biāo)識(shí)請求里封裝的實(shí)體一一用戶代理知道URI 意指什么渊额,并且服務(wù)器不能把此請求應(yīng)用于其它資源(resource)况木。如果服務(wù)器期望請求被應(yīng)用于一個(gè)不同的URI,那么它必須發(fā)送301(永久移動(dòng))響應(yīng)旬迹;用戶代理可以自己決定是否重定向請求火惊。一個(gè)單獨(dú)的資源可能會(huì)被許多不同的URI指定。如:一篇文章可能會(huì)有一個(gè)URI指定當(dāng)前版本奔垦,而這個(gè)URI區(qū)別于這篇文章其它特殊版本的URI屹耐。這種情況下,對一個(gè)通用URI的PUT請求可能會(huì)導(dǎo)致其資源的其它URI請求被源服務(wù)器重定義椿猎。HTTP/1.1沒有定義PUT方法對源服務(wù)器的狀態(tài)影響惶岭。

等冪方法(Idempotent Mehtods)

方法可以有等冪的性質(zhì)因?yàn)椋ǔ顺鲥e(cuò)或終止問題)N>0個(gè)相同請求的副作用同單個(gè)請求的副作用的效果是一樣(譯注:等冪就是值不變性,相同的請求得到相同的響應(yīng)結(jié)果犯眠,不會(huì)出現(xiàn)相同的請求出現(xiàn)不同的響應(yīng)結(jié)果)按灶。方法GET,HEAD筐咧,PUT鸯旁,DELETE都有這種性質(zhì)。同樣量蕊,方法OPTIONS和TRACE不應(yīng)該有副作用羡亩,因此具有內(nèi)在的等冪性。然而危融,有可能有多個(gè)請求的請求序列是不等冪的,即使在那樣的序列中所有方法都是等冪的雷袋。(如果整個(gè)序列整體的執(zhí)行的結(jié)果總是相同的吉殃,并且此結(jié)果不會(huì)因?yàn)樾蛄械恼w,部分的再次執(zhí)行而改變楷怒,那么此序列是等冪的蛋勺。)例如,一個(gè)序列是非等冪的如果它的結(jié)果依賴于一個(gè)值鸠删,此值在以后相同的序列里會(huì)改變抱完。根據(jù)定義,一個(gè)序列如果沒有副作用刃泡,那么此序列是等冪的(假設(shè)在資源集上沒有并行的操作)巧娱。

相同的請求怎樣處理由我們服務(wù)器決定碉怔,比如:一個(gè)創(chuàng)建一篇博文的uri,被請求兩次時(shí),假如我們的服務(wù)器認(rèn)為他們是不一樣的禁添,那么這時(shí)就只能用post撮胧,而不能用put.

(注:引用自《超文本傳輸協(xié)議-HTTP/1.1(修訂版)
另外一點(diǎn):
1、PUT: 把消息本體中的消息發(fā)送到一個(gè)URL,跟POST類似老翘,但不常用芹啥。

簡單地說:通常用于向服務(wù)器發(fā)送請求,如果URI不存在铺峭,則要求服務(wù)器根據(jù)請求創(chuàng)建資源墓怀,如果存在,服務(wù)器就接受請求內(nèi)容卫键,并修改URI資源的原始版本傀履。

-----PUT請求那些封裝在Request-URI的實(shí)體。如果Request-URI引用一個(gè)已存在的資源永罚,則該封裝實(shí)體應(yīng)該作為原始服務(wù)器上的修改版本啤呼。如果Request-URI不是指向一個(gè)已存在的資源,并且該URI可被請求的用戶代碼定義為新資源呢袱,則原始服務(wù)器可用此URI創(chuàng)建新的資源官扣。如果新的資源被創(chuàng)建,這個(gè)原始服務(wù)器就必須通過201(Created)響應(yīng)通知用戶代理羞福。如果已有資源被修改惕蹄,則發(fā)送200或者204響應(yīng),表示成功完成了該請求治专。如果Request-URI既沒有創(chuàng)建也沒有修改資源卖陵,則應(yīng)給予適當(dāng)?shù)腻e(cuò)誤響應(yīng)來反映問題本質(zhì)。實(shí)體的接受者不能忽略任何不理解或沒有實(shí)現(xiàn)的Content-*(如Content-Range)頭部张峰,并且必須返回501響應(yīng)泪蔫。

如果請求經(jīng)過緩存,并且Request-URI標(biāo)識(shí)出一個(gè)或多個(gè)當(dāng)前緩存的實(shí)體喘批,則那些實(shí)體視為過期了撩荣。該方法的響應(yīng)不會(huì)被緩存。

2饶深、POST和PUT的請求根本區(qū)別

POST請求的URI表示處理該封閉實(shí)體的資源餐曹,該資源可能是個(gè)數(shù)據(jù)接收過程、某種協(xié)議的網(wǎng)關(guān)敌厘、或者接收注解的獨(dú)立實(shí)體台猴。然而,PUT請求中的URI表示請求中封閉的實(shí)體-用戶代理知道URI的目標(biāo),并且服務(wù)器無法將請求應(yīng)用到其他資源饱狂。如果服務(wù)器希望該請求應(yīng)用到另一個(gè)URI曹步,就必須發(fā)送一個(gè)301響應(yīng);用戶代理可通過自己的判斷來決定是否轉(zhuǎn)發(fā)該請求嗡官。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末箭窜,一起剝皮案震驚了整個(gè)濱河市亭病,隨后出現(xiàn)的幾起案子尊搬,更是在濱河造成了極大的恐慌漓拾,老刑警劉巖彼宠,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廓握,死亡現(xiàn)場離奇詭異询枚,居然都是意外死亡台舱,警方通過查閱死者的電腦和手機(jī)涧偷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門尚骄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來块差,“玉大人,你說我怎么就攤上這事倔丈『┤颍” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵需五,是天一觀的道長鹉动。 經(jīng)常有香客問我,道長宏邮,這世上最難降的妖魔是什么泽示? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮蜜氨,結(jié)果婚禮上械筛,老公的妹妹穿的比我還像新娘。我一直安慰自己飒炎,他們只是感情好埋哟,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著郎汪,像睡著了一般赤赊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怒竿,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音扩氢,去河邊找鬼耕驰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛录豺,可吹牛的內(nèi)容都是我干的朦肘。 我是一名探鬼主播饭弓,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼媒抠!你這毒婦竟也來了弟断?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對情侶失蹤趴生,失蹤者是張志新(化名)和其女友劉穎阀趴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苍匆,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刘急,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了浸踩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叔汁。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖检碗,靈堂內(nèi)的尸體忽然破棺而出据块,到底是詐尸還是另有隱情,我是刑警寧澤折剃,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布另假,位于F島的核電站,受9級(jí)特大地震影響微驶,放射性物質(zhì)發(fā)生泄漏浪谴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一因苹、第九天 我趴在偏房一處隱蔽的房頂上張望苟耻。 院中可真熱鬧,春花似錦扶檐、人聲如沸凶杖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽智蝠。三九已至,卻和暖如春奈梳,著一層夾襖步出監(jiān)牢的瞬間杈湾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工攘须, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留漆撞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像浮驳,于是被迫代替她去往敵國和親悍汛。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 前言 HTTP Method的歷史: HTTP 0.9 這個(gè)版本只有GET方法 HTTP 1.0 這個(gè)版本有G...
    老馬的春天閱讀 25,918評(píng)論 3 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理至会,服務(wù)發(fā)現(xiàn)离咐,斷路器,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • http 的post 和 get 方法確實(shí)很難區(qū)分奉件,大多數(shù)的解釋都是宵蛀,如果是新建一條記錄的話就用post,如果是更...
    coderhu閱讀 31,229評(píng)論 0 1
  • API定義規(guī)范 本規(guī)范設(shè)計(jì)基于如下使用場景: 請求頻率不是非常高:如果產(chǎn)品的使用周期內(nèi)請求頻率非常高瓶蚂,建議使用雙通...
    有涯逐無涯閱讀 2,519評(píng)論 0 6
  • 一說到REST糖埋,我想大家的第一反應(yīng)就是“啊,就是那種前后臺(tái)通信方式窃这⊥穑”但是在要求詳細(xì)講述它所提出的各個(gè)約束,以及如...
    時(shí)待吾閱讀 3,410評(píng)論 0 19