作為一個(gè)開發(fā)人員勇蝙,你需要了解的一些HTTP基礎(chǔ)知識(shí)

日常開發(fā)過程中豺鼻,經(jīng)常會(huì)使用到http報(bào)文傳遞综液,今天就來說一說http的一些基礎(chǔ)知識(shí)。

首先來看下wiki百科的定義

超文本傳輸協(xié)定(英文:HyperText Transfer Protocol儒飒,縮寫:HTTP)是一種用於分佈式谬莹、協(xié)作式和超媒體信息系統(tǒng)的應(yīng)用層協(xié)議。 HTTP是全球資訊網(wǎng)的數(shù)據(jù)通信的基礎(chǔ)。

HTTP思維導(dǎo)圖

這里提供一張HTTP報(bào)文組成的思維導(dǎo)圖附帽,下面會(huì)圍繞這張圖來展開講解內(nèi)容埠戳。

HTTP報(bào)文導(dǎo)圖

HTTP版本

超文本傳輸協(xié)議已經(jīng)演化出了很多版本,它們中的大部分都是向下兼容的士葫。在 RFC 2145 中描述了HTTP版本號(hào)的用法乞而。客戶端在請(qǐng)求的開始告訴服務(wù)器它采用的協(xié)議版本號(hào)慢显,而后者則在響應(yīng)中采用相同或者更早的協(xié)議版本∽δ#現(xiàn)行常用版本是在1999年提出的1.1版本,以下所說的內(nèi)容都是基于1.1版本來展開的荚藻。

HTTP報(bào)文組成 —— 行(Line)

請(qǐng)求行

請(qǐng)求行包含HTTP版本屋灌、協(xié)議、請(qǐng)求路徑应狱、請(qǐng)求方法幾部分信息共郭。

  • 首先來說下請(qǐng)求路徑:


    請(qǐng)求路徑
    • 協(xié)議(Protocol):常用協(xié)議一般有http和https兩種;
    • 主機(jī)(Host):主機(jī)域名疾呻;
    • 路徑(Path):域名子路徑
    • 參數(shù)(Query String):請(qǐng)求參數(shù)

    請(qǐng)求路徑由以上幾個(gè)部分組成除嘹,其中協(xié)議和主機(jī)是必須項(xiàng),用來區(qū)分不同地址岸蜗,路徑和參數(shù)可以根據(jù)需要或有或無尉咕。譬如“http://www.baidu.com” 是沒有路徑和參數(shù)的,直接指向百度的搜索主頁璃岳,然而在搜索結(jié)果頁年缎,就會(huì)有路徑和參數(shù)。

請(qǐng)求方法

請(qǐng)求方法

在http1.1版本中铃慷,收錄了八種請(qǐng)求方法单芜,在開發(fā)中常用的有四種。

PUT:增
DELETE:刪
POST:改
GET:查

tips:在這里需要引入一個(gè)概念犁柜,冪等洲鸠。**

一個(gè)方法重復(fù)執(zhí)行多次,產(chǎn)生的效果是一樣的馋缅,那就是冪等(idempotent)的坛怪。反之,非冪等股囊。

在上面四種請(qǐng)求方法中,PUT是冪等的更啄,POST是非冪等的稚疹。
在這里再引入一個(gè)思考,你們公司的接口,更新數(shù)據(jù)是用PUT還是POST來做的内狗?

狀態(tài)行

狀態(tài)行是用來表示請(qǐng)求響應(yīng)的返回狀態(tài)
1xx:指示信息——表示請(qǐng)求已經(jīng)接受怪嫌,繼續(xù)處理中
2xx:成功——表示請(qǐng)求已經(jīng)被成功接收、理解柳沙、接受
3xx:重定向——要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作
4xx/客戶端錯(cuò)誤——請(qǐng)求有語法錯(cuò)誤或請(qǐng)求無法實(shí)現(xiàn)
5xx/服務(wù)器端錯(cuò)誤——服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求

知道了這些狀態(tài)碼分類岩灭,就可以根據(jù)不同的狀態(tài)碼,分析請(qǐng)求失敗的大致原因出在哪一方赂鲤,可以更快的定位問題噪径。

HTTP報(bào)文組成 —— 頭(Head)

HTTP的請(qǐng)求和相應(yīng)都會(huì)包含首部,首部中會(huì)包含一些請(qǐng)求或響應(yīng)的額外重要信息数初,例如對(duì)象類型(content-type)找爱,保持連接(keep-Alive)等。

cookie

因?yàn)閔ttp是無狀態(tài)協(xié)議泡孩,它不對(duì)之前發(fā)生過的請(qǐng)求和響應(yīng)的狀態(tài)進(jìn)行管理车摄。也就是說無法根據(jù)之前的狀態(tài)進(jìn)行本次的請(qǐng)求處理。

在請(qǐng)求和響應(yīng)中寫入cookie信息來控制客戶端的狀態(tài)仑鸥,作為記錄客戶端的狀態(tài)位

通用首部

通用首部

請(qǐng)求首部

請(qǐng)求首部

響應(yīng)首部

響應(yīng)首部

實(shí)體首部

實(shí)體首部

HTTP報(bào)文組成 —— 體(Body)

體分為請(qǐng)求體和響應(yīng)體吮播,根據(jù)首部的content-type又可以分為單個(gè)整體和多部分組成。
在請(qǐng)求中眼俊,有一些請(qǐng)求方法是沒有請(qǐng)求體的意狠,例如GET、DELETE等泵琳,這些沒有請(qǐng)求體的方法摄职,所有的參數(shù)都作為QueryString參數(shù),保存在請(qǐng)求路徑中获列。在1.1版本中谷市,只有POST和PUT是有請(qǐng)求體的。

content-type

單個(gè)整體

  • text/plain 純文本
  • application/json 通用且符合標(biāo)準(zhǔn)
  • text/json 兼容IE6
  • text/html

多部分組成(表單上傳)
multipart /form-data

POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA

------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"

title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png

PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

結(jié)語

文章中的內(nèi)容击孩,可能更偏重于行的講解迫悠,對(duì)于首部和體部沒有更深層次的介紹。有興趣的話巩梢,也可以自己再深入研究下创泄。在這里推薦兩個(gè)關(guān)于HTTP的書,一本是《圖解HTTP(上野宣 著 于均良 譯)》括蝠,這個(gè)書講解的比較淺顯易懂鞠抑,更容易理解。另一本是HTTP界的權(quán)威《HTTP權(quán)威指南》忌警,這個(gè)書內(nèi)容更多更全面搁拙,想深入學(xué)習(xí)的可以看一看這本。最后,附上一下《圖解HTTP》 (提取密碼: 8jyg)的PDF版吧箕速,希望有興趣的可以去看一看酪碘。

感謝

文章作為學(xué)習(xí)階段的總結(jié),會(huì)存在許多不足之處盐茎,如有講解錯(cuò)誤之處兴垦,希望可以及時(shí)指出,及時(shí)更正字柠。如果從文章中你獲得了新的知識(shí)探越,得到了新的總結(jié),那這篇胡言亂語募谎,就算是有一絲存在的意義吧扶关。

引用

get、put数冬、post节槐、delete含義與區(qū)別 - - 十五言

HTTP協(xié)議中PUT和POST使用區(qū)別 - 其實(shí)并不難,是你太悲觀 - 博客頻道 - CSDN.NET

四種常見的 POST 提交數(shù)據(jù)方式 | JerryQu 的小站

你應(yīng)該知道的HTTP基礎(chǔ)知識(shí) - 簡(jiǎn)書

字符編碼筆記:ASCII,Unicode 和 UTF-8

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拐纱,一起剝皮案震驚了整個(gè)濱河市铜异,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秸架,老刑警劉巖揍庄,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異东抹,居然都是意外死亡蚂子,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門缭黔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來食茎,“玉大人,你說我怎么就攤上這事馏谨”鹩妫” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵惧互,是天一觀的道長(zhǎng)哎媚。 經(jīng)常有香客問我,道長(zhǎ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
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼称鳞!你這毒婦竟也來了涮较?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤冈止,失蹤者是張志新(化名)和其女友劉穎狂票,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熙暴,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡闺属,尸身上長(zhǎng)有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
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像咒循,于是被迫代替她去往敵國和親据途。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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

  • 1. 網(wǎng)絡(luò)基礎(chǔ)TCP/IP HTTP基于TCP/IP協(xié)議族剑鞍,HTTP屬于它內(nèi)部的一個(gè)子集昨凡。 把互聯(lián)網(wǎng)相關(guān)聯(lián)的協(xié)議集...
    yozosann閱讀 3,437評(píng)論 0 20
  • 鏈接: https://pan.baidu.com/s/1bp08VvT 密碼: nnyd 章節(jié)一:了解Web及網(wǎng)...
    我是三人禾閱讀 1,460評(píng)論 0 4
  • 今天練習(xí)了一個(gè)小節(jié)的精聽,語速還是比較快的蚁署,聽一句寫一句便脊,還是有很多不完整的地方,整理了一些不認(rèn)識(shí)的詞光戈,另外整理了...
    nxujshhdk閱讀 170評(píng)論 0 0
  • 一只貓哪痰,拿著一只花 抹掉,一只馬久妆,肚皮上的草 花瓣墜落的時(shí)候晌杰,一只鳥 折斷翅膀,羽毛墜落 繼續(xù)掩埋筷弦,所以 隱秘越發(fā)...
    鹿客閱讀 170評(píng)論 0 0
  • 不知道自己是怎么了肋演,也許我真的很差。不然也不會(huì)連自己的情緒都控制不了烂琴。 我現(xiàn)在發(fā)現(xiàn)了自己一直以來確實(shí)都沒有太在意自...
    huihuihuihui閱讀 153評(píng)論 0 0