PUT和POST的區(qū)別
這倆個(gè)方法初看一下好像都是更新資源,但是有本質(zhì)上的區(qū)別呻袭,那就是語(yǔ)義眨八。在HTTP中,PUT被定義為冪等(idempotent)的方法左电,POST則不是廉侧,這是一個(gè)很重要的區(qū)別。
首先解釋冪等篓足,冪等是數(shù)學(xué)的一個(gè)用語(yǔ)段誊,對(duì)于單個(gè)輸入或者無(wú)輸入的運(yùn)算方法,如果每次都是同樣的結(jié)果栈拖,則稱其是冪等的连舍。也就是說(shuō),如果一個(gè)網(wǎng)絡(luò)重復(fù)執(zhí)行多次涩哟,產(chǎn)生的效果是一樣的索赏,那就是冪等(idempotent)。
POST
用于提交請(qǐng)求贴彼,可以更新或者創(chuàng)建資源潜腻,是非冪等的,舉個(gè)例子:
在用戶注冊(cè)功能上器仗,每次提交都是創(chuàng)建一個(gè)用戶賬號(hào)融涣,這個(gè)時(shí)候就用POST。
ESTful URL地址應(yīng)為:/user/creation?user_name=&pwd=
PUT
用于向指定URL傳送更新資源青灼,是冪等的暴心。
還是用戶模塊,比如修改用戶密碼杂拨,雖然提交的還是賬戶名跟用戶密碼這個(gè)倆個(gè)必填參數(shù)专普,但是每次提交都只是更新該用戶密碼,每次請(qǐng)求都只是覆蓋原先的值。此時(shí)就該用PUT弹沽。
ESTful URL地址應(yīng)為:/user/{user_id}/modify?pwd=**
用PUT還是POST
當(dāng)需要以更新的形式來(lái)修改某一具體資源的時(shí)候檀夹,如何判斷用PUT還是POST呢筋粗?
很簡(jiǎn)單,如果該更新對(duì)應(yīng)的URI多次調(diào)用的結(jié)果一致炸渡,則PUT娜亿。如果每次提交相同的內(nèi)容,最終結(jié)果不一致的時(shí)候蚌堵,用POST买决。
作者:卜可
來(lái)源:CSDN
原文:https://blog.csdn.net/q649381130/article/details/77980304
GET和POST的區(qū)別
GET 用于獲取信息,是無(wú)副作用的吼畏,是冪等的督赤,且可緩存 POST 用于修改服務(wù)器上的數(shù)據(jù),有副作用泻蚊,非冪等躲舌,不可緩存
GET、POST 請(qǐng)求報(bào)文上的區(qū)別
GET 和 POST 只是 HTTP 協(xié)議中兩種請(qǐng)求方式(異曲同工)性雄,而 HTTP 協(xié)議是基于 TCP/IP 的應(yīng)用層協(xié)議没卸,無(wú)論 GET 還是 POST,用的都是同一個(gè)傳輸層協(xié)議秒旋,所以在傳輸上约计,沒(méi)有區(qū)別。
報(bào)文格式上迁筛,不帶參數(shù)時(shí)病蛉,最大區(qū)別就是第一行方法名不同, 僅僅是報(bào)文的幾個(gè)字符不同而已。
POST 方法請(qǐng)求報(bào)文第一行是這樣的 POST /url HTTP/1.1 GET 方法請(qǐng)求報(bào)文第一行是這樣的 GET /url HTTP/1.1
帶參數(shù)時(shí)報(bào)文的區(qū)別呢瑰煎? 在約定中,GET 方法的參數(shù)應(yīng)該放在 url 中俗孝,POST 方法參數(shù)應(yīng)該放在 body 中
舉個(gè)例子酒甸,如果參數(shù)是 name=Javanx, age=25。
GET 方法報(bào)文是這樣的
GET /updateInfo?name=Javanx&age=25 HTTP/1.1 Host: localhost(示例)
POST 方法報(bào)文是這樣的
POST /updateInfo HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded name=Javanx&age=25(示例)
來(lái)源:https://baijiahao.baidu.com/s?id=1626599028653203490&wfr=spider&for=pc