99久久国产露脸精品麻豆,欧美日韩精品小说,亚洲免费在线美女视频,国产三级中文字幕,91极品国产情侣高潮对白,国产亚洲一区二区三区不卡片,欧美jizz精品欧美性,久久国产精品久久国产片

HTTP協(xié)議中PUT和POST使用區(qū)別

袁志蒙 4050次瀏覽

摘要:有的觀點(diǎn)認(rèn)為,應(yīng)該用POST來(lái)創(chuàng)建一個(gè)資源,用PUT來(lái)更新一個(gè)資源;有的觀點(diǎn)認(rèn)為,應(yīng)該用PUT來(lái)創(chuàng)建一個(gè)資源,用POST來(lái)更新一個(gè)資源;還有...

有的觀點(diǎn)認(rèn)為,應(yīng)該用POST來(lái)創(chuàng)建一個(gè)資源,用PUT來(lái)更新一個(gè)資源;有的觀點(diǎn)認(rèn)為,應(yīng)該用PUT來(lái)創(chuàng)建一個(gè)資源,用POST來(lái)更新一個(gè)資源;還有的觀點(diǎn)認(rèn)為可以用PUT和POST中任何一個(gè)來(lái)做創(chuàng)建或者更新一個(gè)資源。這些觀點(diǎn)都只看到了風(fēng)格,爭(zhēng)論起來(lái)也只是爭(zhēng)論哪種風(fēng)格更好,其實(shí),用PUT還是POST,不是看這是創(chuàng)建還是更新資源的動(dòng)作,這不是風(fēng)格的問(wèn)題,而是語(yǔ)義的問(wèn)題。


在HTTP中,PUT被定義為idempotent的方法,POST則不是,這是一個(gè)很重要的區(qū)別。


   “Methods can also have the property of "idempotence" in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request.”


上面的話(huà)就是說(shuō),如果一個(gè)方法重復(fù)執(zhí)行多次,產(chǎn)生的效果是一樣的,那就是idempotent的。


舉一個(gè)簡(jiǎn)單的例子,假如有一個(gè)博客系統(tǒng)提供一個(gè)Web API,模式是這樣http://www.cwfssh.com/blogs/post/{blog_name},很簡(jiǎn)單,將{blog_name}替換為我們的blog名字,往這個(gè)URI發(fā)送一個(gè)HTTP PUT或者POST請(qǐng)求,HTTP的body部分就是博文,這是一個(gè)很簡(jiǎn)單的REST API例子。我們應(yīng)該用PUT方法還是POST方法?取決于這個(gè)REST服務(wù)的行為是否是idempotent的,假如我們發(fā)送兩個(gè)http://www.cwfssh.com/blogs/post/Sample請(qǐng)求,服務(wù)器端是什么樣的行為?如果產(chǎn)生了兩個(gè)博客帖子,那就說(shuō)明這個(gè)服務(wù)不是idempotent的,因?yàn)槎啻问褂卯a(chǎn)生了副作用了嘛;如果后一個(gè)請(qǐng)求把第一個(gè)請(qǐng)求覆蓋掉了,那這個(gè)服務(wù)就是idempotent的。前一種情況,應(yīng)該使用POST方法,后一種情況,應(yīng)該使用PUT方法。


也許你會(huì)覺(jué)得這個(gè)兩個(gè)方法的差別沒(méi)什么大不了的,用錯(cuò)了也不會(huì)有什么問(wèn)題,但是你的服務(wù)一放到internet上,如果不遵從HTTP協(xié)議的規(guī)范,就可能給自己帶來(lái)麻煩。比如,沒(méi)準(zhǔn)Google Crawler也會(huì)訪問(wèn)你的服務(wù),如果讓一個(gè)不是indempotent的服務(wù)可以用indempotent的方法訪問(wèn),那么你服務(wù)器的狀態(tài)可能就會(huì)被Crawler修改,這是不應(yīng)該發(fā)生的。


隨機(jī)內(nèi)容

表情

共1條評(píng)論
  • 網(wǎng)友評(píng)論:

    考慮restful 的方式 get是最快最安全的方式了。
    post傳遞文件 剩下用get解決

    2017-03-15 16:21:07 回復(fù)

    點(diǎn)擊加載