get與post的區(qū)別?application json 與form表單的區(qū)別?

一厘灼、背景介紹

基本概念

HTTP:在Web應(yīng)用中岸霹,服務(wù)器把網(wǎng)頁(yè)傳給瀏覽器,實(shí)際上就是把網(wǎng)頁(yè)的HTML代碼發(fā)送給瀏覽器裁蚁,讓瀏覽器顯示出來(lái)。而瀏覽器和服務(wù)器之間的傳輸協(xié)議是HTTP继准。HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于從萬(wàn)維網(wǎng)(WWW:World Wide Web )服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議枉证。

工作原理:HTTP協(xié)議工作于客戶端-服務(wù)端,瀏覽器作為HTTP客戶端通過(guò)URL(統(tǒng)一資源定位符)向HTTP服務(wù)端發(fā)送請(qǐng)求,服務(wù)器接收到請(qǐng)求后,向客戶端發(fā)送響應(yīng)信息。

消息結(jié)構(gòu)

客戶端請(qǐng)求消息:由請(qǐng)求行移必、請(qǐng)求頭部室谚、空行、請(qǐng)求數(shù)據(jù)組成崔泵。
GET:請(qǐng)求指定的頁(yè)面信息秒赤,并返回實(shí)體主體
POST:向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求體中憎瘸。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改入篮。

二.知識(shí)剖析

get與post的區(qū)別

1.GET方式

1.GET方式是通過(guò)URL請(qǐng)求傳遞用戶所輸入的內(nèi)容,其提交的內(nèi)容會(huì)全部顯示的瀏覽器的地址欄中幌甘;其安全性很低潮售。如果用戶輸入的內(nèi)容包含密碼之類的私人信息時(shí)很容易被其他人獲取。
2.GET方式提交需要用到Request.QueryString來(lái)取得變量的值锅风。
3.GET提交具有長(zhǎng)度限制酥诽,最長(zhǎng)不能超過(guò)2048字節(jié)。
4.GET是從服務(wù)器上獲取數(shù)據(jù)皱埠。
5.GET是把參數(shù)數(shù)據(jù)隊(duì)列加到提交表單的action屬性所指的URL中盆均,值和表單內(nèi)容一一對(duì)應(yīng),在URL中可以看到漱逸。
6.在頁(yè)面重新刷新載入時(shí)泪姨,沒有提示框詢問(wèn)“是否重新發(fā)送請(qǐng)求”。
7.在做請(qǐng)求時(shí)饰抒,GET是將表單內(nèi)容放到信息的請(qǐng)求頭中肮砾。

2.POST方式

1.POST提交不會(huì)將用戶所輸入的個(gè)人信息顯示在瀏覽器的地址欄中且地址欄中沒有什么變化。
2.POST方式提交需要用到Request.Form來(lái)取得變量的值袋坑。
3.POST沒有提交長(zhǎng)度限制仗处。
4.POST是向服務(wù)器傳送數(shù)據(jù)。
5.POST是通過(guò)HTTP post機(jī)制枣宫,將表單內(nèi)容 中各個(gè)字段與其內(nèi)容旋轉(zhuǎn)在HTML HEADER內(nèi)一起傳送到action屬性所批的URL地址婆誓。用戶是看不到這一過(guò)程的。
6.在頁(yè)面重新刷新載入時(shí)也颤,會(huì)有提示框詢問(wèn)“是否重新發(fā)送請(qǐng)求”洋幻。

3.冪等

先介紹下冪等的概念:如果一個(gè)操作沒有副作用,或者多次操作對(duì)資源產(chǎn)生的副作用相同翅娶,我們就說(shuō)這個(gè)操作是冪等的文留。
get方法用戶獲取資源,沒有副作用竭沫,所以是冪等的燥翅;post用于創(chuàng)建資源,是有副作用的蜕提,且副作用不同森书,所以post不是冪等的。(兩次相同的POST請(qǐng)求會(huì)在服務(wù)器端創(chuàng)建兩份資源谎势,它們具有不同的URI)

GET&POST

上圖是在W3C上找到的答案凛膏。
總結(jié)一下:
1.GET在瀏覽器回退時(shí)是無(wú)害的,而POST會(huì)再次提交請(qǐng)求它浅。
2.GET產(chǎn)生的URL地址可以被Bookmark译柏,而POST不可以。
3.GET請(qǐng)求會(huì)被瀏覽器主動(dòng)cache姐霍,而POST不會(huì)鄙麦,除非手動(dòng)設(shè)置。
4.GET請(qǐng)求只能進(jìn)行url編碼镊折,而POST支持多種編碼方式胯府。
5.GET請(qǐng)求參數(shù)會(huì)被完整保留在瀏覽器歷史記錄里,而POST中的參數(shù)不會(huì)被保留恨胚。
6.GET請(qǐng)求在URL中傳送的參數(shù)是有長(zhǎng)度限制的骂因,而POST沒有。
7.對(duì)參數(shù)的數(shù)據(jù)類型赃泡,GET只接受ASCII字符寒波,而POST沒有限制乘盼。
8.GET比POST更不安全,因?yàn)閰?shù)直接暴露在URL上俄烁,所以不能用來(lái)傳遞敏感信息绸栅。
9.GET參數(shù)通過(guò)URL傳遞,POST放在Request body中页屠。

三粹胯、常見問(wèn)題

GET和POST使用環(huán)境?

四辰企、解決方案

應(yīng)該符合語(yǔ)義的使用;即獲取數(shù)據(jù)使用GET风纠,增加數(shù)據(jù)使用POST。
當(dāng)請(qǐng)求無(wú)副作用時(shí)(如進(jìn)行搜索)牢贸,便可使用GET方法竹观;當(dāng)請(qǐng)求有副作用時(shí)(如添加數(shù)據(jù)行),則用POST方法十减。

五栈幸、編碼實(shí)戰(zhàn)

六、擴(kuò)展思考

application json 與form表單的區(qū)別帮辟?

application/json
隨著json規(guī)范的越來(lái)越流行速址,并且瀏覽器支持程度原來(lái)越好,許多開發(fā)人員以application/json作為請(qǐng)求content-type由驹,告訴服務(wù)器請(qǐng)求的主題內(nèi)容是json格式的字符串芍锚,服務(wù)器端會(huì)對(duì)json字符串進(jìn)行解析,這種方式的好處就是前端人員不需要關(guān)心數(shù)據(jù)結(jié)構(gòu)的復(fù)雜度蔓榄,只要是標(biāo)準(zhǔn)的json格式就能提交成功并炮,application/json數(shù)據(jù)格式越來(lái)越得到開發(fā)人員的青睞。

application/x-www-form-urlencoded方式
是Jquery的Ajax請(qǐng)求默認(rèn)方式甥郑,這種方式的好處就是瀏覽器都支持逃魄,在請(qǐng)求發(fā)送過(guò)程中會(huì)對(duì)數(shù)據(jù)進(jìn)行序列化處理,以鍵值對(duì)形式澜搅?key1=value1&key2=value2的方式發(fā)送到服務(wù)器伍俘,如果用Jquery,它內(nèi)部已經(jīng)進(jìn)行了處理勉躺,如果自己寫原生的Ajax請(qǐng)求癌瘾,就需要自己對(duì)數(shù)據(jù)進(jìn)行序列化。

七饵溅、更多討論

分別在什么情況下運(yùn)用post和get妨退?

八、參考文獻(xiàn)

參考一:W3C
參考二:知乎——get和post區(qū)別?
參考三:AJAX和表單提交中GET與POST的區(qū)別
參考四:99%的人理解錯(cuò) HTTP 中 GET 與 POST 的區(qū)別
參考五:聽說(shuō)『99% 的人都理解錯(cuò)了 HTTP 中 GET 與 POST 的區(qū)別』咬荷?冠句?
參考六:application/json 和 application/x-www-form-urlencoded的區(qū)別

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市萍丐,隨后出現(xiàn)的幾起案子轩端,更是在濱河造成了極大的恐慌,老刑警劉巖逝变,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異奋构,居然都是意外死亡壳影,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門弥臼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宴咧,“玉大人,你說(shuō)我怎么就攤上這事径缅〔粽ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵纳猪,是天一觀的道長(zhǎng)氧卧。 經(jīng)常有香客問(wèn)我,道長(zhǎng)氏堤,這世上最難降的妖魔是什么沙绝? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮鼠锈,結(jié)果婚禮上闪檬,老公的妹妹穿的比我還像新娘。我一直安慰自己购笆,他們只是感情好粗悯,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著同欠,像睡著了一般样傍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上行您,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天铭乾,我揣著相機(jī)與錄音,去河邊找鬼娃循。 笑死炕檩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播笛质,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼泉沾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了妇押?” 一聲冷哼從身側(cè)響起跷究,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎敲霍,沒想到半個(gè)月后俊马,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肩杈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年柴我,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扩然。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡艘儒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出夫偶,到底是詐尸還是另有隱情界睁,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布兵拢,位于F島的核電站翻斟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏卵佛。R本人自食惡果不足惜杨赤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望截汪。 院中可真熱鬧疾牲,春花似錦、人聲如沸衙解。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蚓峦。三九已至舌剂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間暑椰,已是汗流浹背霍转。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留一汽,地道東北人避消。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓低滩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親岩喷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子恕沫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

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