HTTP Method詳細(xì)解讀(`GET` `HEAD` `POST` `OPTIONS` `PUT` `DELETE` `TRACE` `CONNECT`)

GET HEAD POST OPTIONS PUT DELETE TRACE CONNECT

HTTP Method的歷史:
  • HTTP 0.9 這個版本只有GET方法
  • HTTP 1.0 這個版本有GET HEAD POST這三個方法
  • HTTP 1.1 這個版本是當(dāng)前版本逼肯,包含GET HEAD POST OPTIONS PUT DELETE TRACE CONNECT這8個方法

我們要點(diǎn)餐三椿,我們必須先知道菜單是甚麼(get),
我們會向服務(wù)生點(diǎn)餐(post),
我們想要取消剛才點(diǎn)的餐點(diǎn)(delete),
我們想要重新點(diǎn)一次(put)歌馍,
我們想要加點(diǎn)甜點(diǎn)和飲料(patch)晓锻。

GET

GET方法意思是獲取被請求URI(Request-URI)指定的信息(以實(shí)體的格式)。如果請求URI涉及到一個數(shù)據(jù)生成過程绪钥,那么這個生成的數(shù)據(jù)應(yīng)該被作為實(shí)體在響應(yīng)中返回,但這并不是過程的資源文本,除非資源文本恰好是過程的輸出(譯注:URI指示的資源是動態(tài)生成的)。

如果請求消息包含 If-Modified-Since,,If-Unmodified-Since,If-Match,匈织,If-None-Match,或者 If-Range頭域,弦追,GET的語義將變成“條件(conditionall) GET”掸哑。一個條件GET方法會請求滿足條件頭域的實(shí)體摔癣。條件GET方法的目的是為了減少不必要的網(wǎng)絡(luò)使用逾条,這通過利用緩存的實(shí)體的更新,從而不用多次請求或傳輸客戶已經(jīng)擁有的數(shù)據(jù)酌心。

如果請求方法包含一個Range頭域完疫,那么GET方法就變成“部分Get”方法芳誓。一個部分GET會請求實(shí)體的一部分赂摆,這在14.35節(jié)里描述了。 部分GET方法的目的是為了減少不必要的網(wǎng)絡(luò)使用,這通過允許獲取部分實(shí)體搂妻,從而不需要傳輸客戶端已經(jīng)擁有的數(shù)據(jù)坟募。

GET請求的響應(yīng)是可緩存的(cacheable)

HEAD

HEAD方法和GET方法一致她紫,除了服務(wù)器不能在響應(yīng)里返回消息主體。HEAD請求響應(yīng)里HTTP頭域里的元信息應(yīng)該和GET請求響應(yīng)里的元信息一致赊堪。此方法被用來獲取請求實(shí)體的元信息而不需要傳輸實(shí)體主體(entity-body)。此方法經(jīng)常被用來測試超文本鏈接的有效性赎离,可訪問性,和最近的改變柴梆。.

HEAD請求的響應(yīng)是可緩存的霸奕,因?yàn)轫憫?yīng)里的信息可能被用于更新以前的那個資源的緩存實(shí)體.质帅。如果出現(xiàn)一個新的域值指明了緩存實(shí)體和當(dāng)前源服務(wù)器上實(shí)體的不同(可能因?yàn)镃ontent-Length票彪,Content-MD5在旱,ETag或Last-Modified值的改變)谅畅,那么緩存(cache)必須認(rèn)為此緩存項(xiàng)是過時的(stale)。

POST

POST 方法被用于請求源服務(wù)器接受請求中的實(shí)體作為請求資源的一個新的從屬物。POST被設(shè)計(jì)涵蓋下面的功能四康。

-已存在的資源的注釋郑口;

-發(fā)布消息給一個布告板鸳碧,新聞組盾鳞,郵件列表,或者相似的文章組瞻离。

-提供一個數(shù)據(jù)塊腾仅,如提交一個表單給一個數(shù)據(jù)處理過程。

-通過追加操作來擴(kuò)展數(shù)據(jù)庫套利。

POST方法的實(shí)際功能是由服務(wù)器決定的推励,并且經(jīng)常依賴于請求URI(Request-URI)。POST提交的實(shí)體是請求URI的從屬物日裙,就好像一個文件從屬于一個目錄吹艇,一篇新聞文章從屬于一個新聞組,或者一條記錄從屬于一個數(shù)據(jù)庫昂拂。

POST方法執(zhí)行的動作可能不會對請求URI所指的資源起作用受神。在這種情況下,200(成功)或者204(沒有內(nèi)容)將是適合的響應(yīng)狀態(tài)格侯,這依賴于響應(yīng)是否包含一個描述結(jié)果的實(shí)體鼻听。

如果資源被源服務(wù)器創(chuàng)建,響應(yīng)應(yīng)該是201(Created)并且包含一個實(shí)體联四,此實(shí)體描述了請求的狀態(tài)并且此實(shí)體引用了一個新資源和一個Location頭域(見14.30節(jié))撑碴。

POST方法的響應(yīng)是可緩存的。除非響應(yīng)里有Cache-Control或者Expires頭域指示其響應(yīng)不可緩存朝墩。然而醉拓,303(見其他)響應(yīng)能被利用去指導(dǎo)用戶代理(agent)去獲得可緩存的響應(yīng)。

POST 請求必須遵循8.2節(jié)里指明的消息傳輸需求收苏。

參見15.1.3節(jié)關(guān)于安全性的考慮.

PUT

PUT方法請求服務(wù)器去把請求里的實(shí)體存儲在請求URI(Request-URI)標(biāo)識下亿卤。如果請求URI(Request-URI)指定的的資源已經(jīng)在源服務(wù)器上存在,那么此請求里的實(shí)體應(yīng)該被當(dāng)作是源服務(wù)器此URI所指定資源實(shí)體的修改版本鹿霸。如果請求URI(Request-URI)指定的資源不存在排吴,并且此URI被用戶代理(user agent,譯注:用戶代理可認(rèn)為是客戶瀏覽器)定義為一個新資源懦鼠,那么源服務(wù)器就應(yīng)該根據(jù)請求里的實(shí)體創(chuàng)建一個此URI所標(biāo)識下的資源钻哩。如果一個新的資源被創(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)建或者改變睦袖,一個合適的錯誤響應(yīng)應(yīng)該給出以反應(yīng)問題的性質(zhì)珊肃。實(shí)體的接收者不能忽略任何它不理解的Content-*(如:Content-Range)頭域,并且必須返回501(沒有被實(shí)現(xiàn))響應(yīng)。

如果請求穿過一個緩存(cache)近范,并且此請求URI(Request-URI)指示了一個或多個當(dāng)前緩存的實(shí)體嘶摊,那么這些實(shí)體應(yīng)該被看作是舊的。PUT方法的響應(yīng)不應(yīng)該被緩存评矩。

POST方法和PUT方法請求最根本的區(qū)別是請求URI(Request-URI)的含義不同叶堆。POST請求里的URI指示一個能處理請求實(shí)體的資源(譯注:此資源可能是一段程序,如jsp里的servlet) 斥杜。此資源可能是一個數(shù)據(jù)接收過程虱颗,一個網(wǎng)關(guān)(gateway,譯注:網(wǎng)關(guān)和代理服務(wù)器的區(qū)別是:網(wǎng)關(guān)可以進(jìn)行協(xié)議轉(zhuǎn)換蔗喂,而代理服務(wù)器不能忘渔,只是起代理的作用,比如緩存服務(wù)器其實(shí)就是一個代理服務(wù)器)缰儿,或者一個單獨(dú)接收注釋的實(shí)體畦粮。而PUT方法請求里有一個實(shí)體一一用戶代理知道URI意指什么,并且服務(wù)器不能把此請求應(yīng)用于其他URI指定的資源乖阵。如果服務(wù)器期望請求被應(yīng)用于一個不同的URI宣赔,那么它必須發(fā)送301(永久移動了)響應(yīng);用戶代理可以自己決定是否重定向請求瞪浸。

一個獨(dú)立的資源可能會被許多不同的URI指定儒将。如:一篇文章可能會有一個URI指定當(dāng)前版本,此URI區(qū)別于其文章其他特殊版本的URI对蒲。這種情況下钩蚊,一個通用URI的PUT請求可能會導(dǎo)致其資源的其他URI被源服務(wù)器定義。

HTTP/1.1沒有定義PUT方法對源服務(wù)器的狀態(tài)影響蹈矮。

PUT請求必須遵循8.2節(jié)中的消息傳輸要求砰逻。

除非特別指出,PUT方法請求里的實(shí)體頭域應(yīng)該被用于資源的創(chuàng)建或修改含滴。

DELETE

DELETE方法請求源服務(wù)器刪除請求URI指定的資源诱渤。此方法可能會在源服務(wù)器上被人為的干涉(或其他方法)丐巫√缚觯客戶端不能保證此操作能被執(zhí)行,即使源服務(wù)器返回成功狀態(tài)碼递胧。然而碑韵,服務(wù)器不應(yīng)該指明成功除非它打算刪除資源或把此資源移到一個不可訪問的位置。

如果響應(yīng)里包含描述成功的實(shí)體缎脾,響應(yīng)應(yīng)該是200(Ok)祝闻;如果DELETE動作沒有通過,應(yīng)該以202(已接受)響應(yīng);如果DELETE方法請求已經(jīng)通過了联喘,但響應(yīng)不包含實(shí)體华蜒,那么應(yīng)該以204(無內(nèi)容)響應(yīng)。

如果請求穿過緩存豁遭,并且請求URI(Request-URI)指定一個或多個緩存當(dāng)前實(shí)體叭喜,那么這些緩存項(xiàng)應(yīng)該被認(rèn)為是舊的。DELETE方法的響應(yīng)是不能被緩存的蓖谢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捂蕴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子闪幽,更是在濱河造成了極大的恐慌啥辨,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盯腌,死亡現(xiàn)場離奇詭異溉知,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)腕够,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門着倾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人燕少,你說我怎么就攤上這事卡者。” “怎么了客们?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵崇决,是天一觀的道長。 經(jīng)常有香客問我底挫,道長恒傻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任建邓,我火速辦了婚禮盈厘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘官边。我一直安慰自己沸手,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布注簿。 她就那樣靜靜地躺著契吉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诡渴。 梳的紋絲不亂的頭發(fā)上捐晶,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼惑灵。 笑死山上,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的英支。 我是一名探鬼主播胶哲,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼潭辈!你這毒婦竟也來了鸯屿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤把敢,失蹤者是張志新(化名)和其女友劉穎寄摆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體修赞,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡婶恼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了柏副。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勾邦。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖割择,靈堂內(nèi)的尸體忽然破棺而出眷篇,到底是詐尸還是另有隱情,我是刑警寧澤荔泳,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布蕉饼,位于F島的核電站,受9級特大地震影響玛歌,放射性物質(zhì)發(fā)生泄漏昧港。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一支子、第九天 我趴在偏房一處隱蔽的房頂上張望创肥。 院中可真熱鬧,春花似錦值朋、人聲如沸叹侄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽圈膏。三九已至塔猾,卻和暖如春篙骡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工糯俗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尿褪,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓得湘,卻偏偏與公主長得像杖玲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子淘正,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

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

  • 前言 HTTP Method的歷史: HTTP 0.9 這個版本只有GET方法 HTTP 1.0 這個版本有G...
    老馬的春天閱讀 25,948評論 3 9
  • 2系列200 OK請求已成功摆马,請求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回。201 Created請求已經(jīng)被實(shí)現(xiàn)鸿吆,而且...
    Y像夢一樣自由閱讀 3,575評論 1 5
  • 狀態(tài)碼的分類 1** 信息囤采,服務(wù)器收到請求,需要請求者繼續(xù)執(zhí)行操作 2** 成功惩淳,操作被成功接收并處理 3...
    零一間閱讀 197評論 0 0
  • HTTP狀態(tài)碼的分類 HTTP狀態(tài)碼由三個十進(jìn)制數(shù)字組成蕉毯,第一個十進(jìn)制數(shù)字定義了狀態(tài)碼的類型,后兩個數(shù)字沒有分類的...
    薄涼_簡書閱讀 567評論 0 1
  • API定義規(guī)范 本規(guī)范設(shè)計(jì)基于如下使用場景: 請求頻率不是非常高:如果產(chǎn)品的使用周期內(nèi)請求頻率非常高思犁,建議使用雙通...
    有涯逐無涯閱讀 2,537評論 0 6