put與post
PUT和POS都有更改指定URI的語(yǔ)義.但PUT被定義 idempotent的方法,POST則不是。
idempotent的方法:如果一個(gè)方法重復執行多次,產(chǎn)生 效杲是一樣的,那就是idempotent的。
也就是說(shuō):
。PUT請求:如果兩個(gè)請求相同,后一個(gè)請求會(huì )把 第一個(gè)請求覆蓋掉。(所以PUT用來(lái)改資源)
。Post請求:后一個(gè)請求不會(huì )把第一個(gè)請求覆蓋掉。 (所以Post用來(lái)增資源)
get 與 post
1. GET參數通過(guò)URL傳遞,POST放在Request body 中。
2. GET請求會(huì )被瀏覽器主動(dòng)cache,而POST不會(huì ),的 非手動(dòng)設置。
3. GET請求參數會(huì )被完整保留在瀏覽器歷史記錄 里,而POST中的參數不會(huì )被保留。
4. Get請求中有非ASCII字符,會(huì )在請求之前進(jìn)行 轉碼,POST不用,因為POST在Request body中, 通過(guò)MIME,也就可以傳輸非ASCII字符。
5 .一般我們在瀏覽器輸入一個(gè)網(wǎng)址訪(fǎng)問(wèn)網(wǎng)站都是 GET請求
6 . HTTP的底層是TCP/IP。HTTP只是個(gè)行為準則, 而TCP才是GET 和POST怎么實(shí)現的基本。
GET/POST都是TCP鏈接。GET和POST能做的事 情是一樣一樣的。但是請求的數據量太大對瀏覽 器和服務(wù)器都是很大負擔。所以業(yè)界有了不成文 規定,(大多數)瀏覽器通常都會(huì )限制url長(cháng)度在 2K個(gè)字節,而(大多數)服務(wù)器最多處理64K大 小的url。
7 . GET產(chǎn)生一個(gè)TCP數據包;POST產(chǎn)生兩個(gè)TCP數 據包。對于GET方式的請求,瀏覽器會(huì )把http header和data一并發(fā)送出去,服務(wù)器響應200 (返 回數據);而對于POST,瀏覽器先發(fā)送header, 服務(wù)器響應100 continue,瀏覽器再發(fā)送data,服 務(wù)器響應200 ok (返回數據)。
8 .在網(wǎng)絡(luò )環(huán)境好的情況下,發(fā)一次包的時(shí)間和發(fā)兩 次包的時(shí)間差別基本可以無(wú)視。而在網(wǎng)絡(luò )環(huán)境差 的情況下,兩次包的TCP在驗證數據包完整性 上,有非常大的優(yōu)點(diǎn)。但并不是所有瀏覽器都會(huì ) 在POST中發(fā)送兩次包,Firefox就只發(fā)送一次。
聯(lián)系客服