HTTP方法的幂等性
HTTP 方法的冪等性
HTTP 定義了服務器的交互方法 ?包括OPTIONS、HEAD、GET、POST、DELETE、PUT、TRACE、CONNECT
POST 與PUT 的區別
創建一條記錄使用POST
更新一條記錄使用PUT (也可以被用來創建資源,不常用)
POST 成功 返回200(成功),204(沒有內容) ?201(Created,在資源被服務器創建的時候)
PUT 成功返回 200
冪等性(Idempotence)。在HTTP/1.1規范中冪等性的定義是:
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.
HTTP方法的冪等性是指一次和多次請求某一個資源應該具有同樣的副作用。
GET HEAD PUT DELETE 有冪等性,TRACE、OPTIONS 不具有副作用,有內在的冪等性
HTTP GET方法用于獲取資源,不應有副作用,所以是冪等的。比如:GET http://www.bank.com/account/123456,不會改變資源的狀態,不論調用一次還是N次都沒有副作用。請注意,這里強調的是一次和N次具有相同的副作用,而不是每次GET的結果相同。GET http://www.news.com/latest-news這個HTTP請求可能會每次得到不同的結果,但它本身并沒有產生任何副作用,因而是滿足冪等性的。
HTTP DELETE方法用于刪除資源,有副作用,但它應該滿足冪等性。比如:DELETE http://www.forum.com/article/4231,調用一次和N次對系統產生的副作用是相同的,即刪掉id為4231的帖子;因此,調用者可以多次調用或刷新頁面而不必擔心引起錯誤。
比較容易混淆的是HTTP POST和PUT。POST和PUT的區別容易被簡單地誤認為“POST表示創建資源,PUT表示更新資源”;而實際上,二者均可用于創建資源,更為本質的差別是在冪等性方面。在HTTP規范中對POST和PUT是這樣定義的:
POST所對應的URI并非創建的資源本身,而是資源的接收者。比如:POST http://www.forum.com/articles的語義是在http://www.forum.com/articles下創建一篇帖子,HTTP響應中應包含帖子的創建狀態以及帖子的URI。兩次相同的POST請求會在服務器端創建兩份資源,它們具有不同的URI;所以,POST方法不具備冪等性。而PUT所對應的URI是要創建或更新的資源本身。比如:PUT http://www.forum/articles/4231的語義是創建或更新ID為4231的帖子。對同一URI進行多次PUT的副作用和一次PUT是相同的;因此,PUT方法具有冪等性。
如何保證接口的冪等性: 加token ,laravel 采用了此方法。
參照 https://www.cnblogs.com/weidagang2046/archive/2011/06/04/idempotence.html
?
總結
以上是生活随笔為你收集整理的HTTP方法的幂等性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 30个外贸业务员常用邮件模板案例分享
- 下一篇: HTTP请求方法及幂等性