基本概念
客戶端與服務器直接通信通過超文本傳輸協(xié)議http就珠。
客戶端和服務器之間進行請求-相應時补履,最常用的方法是get和post。
get:從指定的資源請求數(shù)據(jù)太伊。
post:根據(jù)報文主體對指定的資源做出處理雇锡。
get與post的區(qū)別:
- get只用來從服務器端獲取數(shù)據(jù),post用于上傳或者修改數(shù)據(jù)
- get參數(shù)通過URL地址欄傳輸僚焦,post參數(shù)在body中锰提,通過報文傳輸,安全性post高芳悲。因而處理敏感機密數(shù)據(jù)時不應該使用get
- get大小受限于瀏覽器和服務器立肘,post理論上沒有限制部分瀏覽器會緩存get的response,因而相同的get會得到相同的response名扛,即便是服務器端的數(shù)據(jù)已經(jīng)改變谅年。同時get請求可能會保留在瀏覽器的歷史記錄中。post不會被瀏覽器緩存肮韧,也不會被保留在瀏覽器的歷史記錄中
- get請求可能被收藏為書簽融蹂,而post不會被收藏為書簽
冪等(Idempotence)
同一個請求方法執(zhí)行多次和僅執(zhí)行一次的效果完全相同旺订。
get僅用于請求資源,是冪等的殿较,而post不是冪等的耸峭。
所以當刷新時,get可以重新發(fā)送請求淋纲,而post則會遇到瀏覽器的提醒劳闹,因為這是另外一次請求。結(jié)果可能會不一樣洽瞬。
此處可用于當失去連接時重新發(fā)送的情況本涕。
副作用:
當發(fā)送一條請求時,網(wǎng)上的資源沒有發(fā)生修改伙窃,則認為這個請求時無副作用的菩颖。比如注冊是有副作用的,瀏覽是無副作用的为障。
HTML Method
- GET:無副作用晦闰,冪等
- PUT:副作用,冪等
- POST:副作用鳍怨,非冪等
- DELETE:副作用呻右,冪等
協(xié)議和實現(xiàn)之間還有一定距離。