幾天前和後端同事探討接口問題。原由是他給我一個不須要任何數據提交,單純獲得數據的Post接口。引起了我對Post,Get接口的思考。
Post,Get接口是咱們最常使用的接口。那麼那些彷佛約定俗成的規則又是怎麼來的呢? 他們究竟哪裏不一樣?
下面讓咱們一探究竟吧。ios
http協議是基於tcp協議的應用層協議,tcp協議做爲可靠的傳輸層協議,所以http協議也是可靠的。平常開發過程當中,最經常使用的是get post put delete,在http協議的規定中,這四個method屬於標準的crud,分別表明了增刪改查,存在着語義上的差異。數據庫
GET請求會向數據庫發索取數據的請求,從而來獲取信息,該請求就像數據庫的select操做同樣,只是用來查詢一下數據,不會修改、增長數據,不會影響資源的內容,即該請求不會產生反作用。不管進行多少次操做,結果都是同樣的。axios
PUT請求是向服務器端發送數據的,從而改變信息,該請求就像數據庫的update操做同樣,用來修改數據的內容,可是不會增長數據的種類等,也就是說不管進行多少次PUT操做,其結果並無不一樣。後端
POST請求同PUT請求相似,都是向服務器端發送數據的,可是該請求會改變數據的種類等資源,就像數據庫的insert操做同樣,會建立新的內容。幾乎目前全部的提交操做都是用POST請求的。瀏覽器
DELETE請求顧名思義,就是用來刪除某一個資源的,該請求就像數據庫的delete操做。緩存
其實咱們平時工做最多的是使用Post,Get請求。最容易產生歧義的也是這兩個接口。由於兩個接口每每能夠達到同樣的效果,因此有些小夥伴就認爲他們是同樣的。安全
根據HTTP規範,GET用於信息獲取,並且應該是安全的,冪等的,可緩存的。服務器
根據HTTP規範,POST表示可能修改變服務器上的資源的請求。併發
GET和POST本質上都是TCP連接,並沒有差異。因爲HTTP的規定和瀏覽器的限制,致使他們在使用時體現出一些不一樣。tcp
GET產生一個TCP數據包,POST產生兩個數據包。對於GET請求來講,瀏覽器會把HTTP header和data一併發送出去,服務器相應200即返回數據。
對於POST來講,瀏覽器會先發送header,服務器相應100 continue,瀏覽器再發送data,服務器相應200返回數據。
axios使用說明書,敬請期待。