參考文獻(xiàn)
http://android.jobbole.com/85218/
http://www.w3school.com.cn/tags/html_ref_httpmethods.asp
https://www.zhihu.com/question/28586791
總是被問及get和post的區(qū)別,感覺每個人的回答都有些許不同.借此機會把相關(guān)的知識和要點進(jìn)行一些總結(jié).
HTTP請求
要講到get和post的區(qū)別,首先需要對http請求的相關(guān)知識有一定的理解.
什么是HTTP
HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于從萬維網(wǎng)(WWW:World Wide Web )服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。
最常見的一個HTTP請求就是我們打開瀏覽器輸入一個網(wǎng)址,這樣的操作就是一個標(biāo)準(zhǔn)的get請求過程,瀏覽器請求url地址的內(nèi)容,呈現(xiàn)給終端用戶進(jìn)行展示.
HTTP請求的傳送過程

借用他人的圖片,其中很詳細(xì)的闡述了一次http請求傳送過程的7個步驟.只有在建立連接之后才能實現(xiàn)相互間的通信.
通過這個圖看一看到,建立tcp連接需要三次傳輸(即常說的三次握手).在進(jìn)行消息傳送之前需要雙發(fā)確認(rèn)都能發(fā)送并接收消息.
- 瀏覽器向服務(wù)器發(fā)送一個請求
- 服務(wù)器收到請求告知瀏覽器,可以收到
- 瀏覽器回復(fù)服務(wù)器我亦能收到你發(fā)送的內(nèi)容
經(jīng)過雙方確知之后表示連接建立成功.然后就可以進(jìn)行消息發(fā)送了.
HTTP報文
建立連接之后就開始內(nèi)容的傳輸.可以通過chrome瀏覽器的開發(fā)者工具查看請求的信息(注意瀏覽器顯示的報文信息是格式化過的).
報文分為請求報文和相應(yīng)報文.為了講解get和post的區(qū)別,報文相關(guān)的知識必須要有所了解.因為在降到請求傳遞參數(shù)的時候需要用到.
HTTP報文格式

從客戶端發(fā)往Web服務(wù)器的HTTP報文稱為請求報文(request message),從服務(wù)器發(fā)往客戶端的報文稱為響應(yīng)報文(response message).HTTP請求和響應(yīng)報文的格式很類似.
HTTP 報文包括以下三個部分:
- 報文起始行
報文的第一行就是起始行,在請求報文中用來說明用什么方式向什么地址做請求,在響應(yīng)報文中說明返回的狀態(tài)信息(成功、失敗等) - 報文頭部
起始行后面跟隨報文的頭部信息(可以沒有).每個頭部字段都包含一個名字和一個值,為了便于解析,兩者之間用冒號(:)來分隔.報文頭部以一個空行結(jié)束. - 報文體
空行之后的內(nèi)容被認(rèn)定為報文體,其中包含了所有類型的數(shù)據(jù).請求主體中包括了要發(fā)送給 Web 服務(wù)器的數(shù)據(jù);響應(yīng)主體中裝載了要返回給客戶端的數(shù)據(jù).起始行和頭部都是文本形式且都是結(jié)構(gòu)化的,而主體則不同,主體中可以包含任意的二進(jìn)制數(shù)據(jù)(比如圖片、視頻、音軌、軟件程序)或者文本信息.報文體中的數(shù)據(jù)以什么形式解析可以在報文頭的Content-type屬性中進(jìn)行指定.
GET和POST請求
在發(fā)送HTTP請求的時候,可以在請求行中指定請求的方式.最常見的是GET和POST,當(dāng)然還有其他的(PUT,DELETE,PATCH等等).
- GET - 從指定的資源請求數(shù)據(jù)。
- POST - 向指定的資源提交要被處理的數(shù)據(jù)
w3schools上以一個表格的形式列出了兩者的區(qū)別

通過表格可以看到兩者的區(qū)別.確切的講這些應(yīng)該算是實現(xiàn)形式上的區(qū)別,發(fā)送GET或者POST請求時應(yīng)該使用的方法.
GET的語義是請求獲取指定的資源.GET方法是安全、冪等、可緩存的(除非有 Cache-ControlHeader的約束),GET方法的報文主體沒有任何語義.
POST的語義是根據(jù)請求負(fù)荷(報文主體)對指定的資源做出處理,具體的處理方式視資源類型而不同.POST不安全,不冪等,不可緩存.
冪等
冪等(idempotent、idempotence)是一個數(shù)學(xué)與計算機學(xué)概念,常見于抽象代數(shù)中。
在編程中.一個冪等操作的特點是其任意多次執(zhí)行所產(chǎn)生的影響均與一次執(zhí)行的影響相同。冪等函數(shù),或冪等方法,是指可以使用相同參數(shù)重復(fù)執(zhí)行,并能獲得相同結(jié)果的函數(shù)。這些函數(shù)不會影響系統(tǒng)狀態(tài),也不用擔(dān)心重復(fù)執(zhí)行會對系統(tǒng)造成改變。
百度百科