6
A
回答
13
POST和PUT都可用於在不同情況下創建和更新操作。那麼PUT和POST之間的區別究竟是什麼? 簡而言之:當且僅當您知道資源將存活的URL以及資源的全部內容時,才使用PUT。否則,使用POST。
POST是一個令人難以置信的一般動詞。因爲它既不保證安全性也不具有冪等性,並且它在RFC中有相對寬鬆的描述,所以你可以將它用於任何事情。事實上,你可以讓所有的請求POST請求,因爲POST幾乎沒有承諾;它可以表現得像一個GET,一個PUT或一個DELETE,如果它想的話。它還可以做一些其他動詞無法做到的事情 - 它可以在與HTTP請求中的URL不同的URL上創建新資源;它可以在不改變整個事物的情況下修改資源的一部分(儘管提議但未廣泛接受的PATCH方法可以做類似的事情)。
PUT是一個更嚴格的動詞。它需要一個完整的資源並將其存儲在給定的URL中。如果之前有資源,它就會被替換;如果不是,則創建一個新的。這些屬性支持idempotence,這是一個天真的創建或更新操作可能不會。我懷疑這可能是爲什麼PUT被定義的原因;它是一種冪等操作,允許客戶端向服務器發送信息。
參考文獻:
- RFC 2616 - HTTP 1.1
- RFC 5789 - 用於HTTP PATCH方法
- Martin Fowler的,理查森成熟度模型
1
您可以發送請求主體以同樣的方式,它只是你的應用程序代碼的處理不同...
的POST
動詞傳統上用於創建資源
的PUT
動詞傳統上用於更新資源
2
從HTTP的角度來看,請求格式是相同的。
0
PUT
上傳的新資源服務器。如果資源已經存在並且不同,它將被替換;如果它不存在,則創建它。
POST
觸發服務器上的操作。它有副作用,可用於觸發訂單,修改數據庫,在論壇發佈消息或其他操作。
相關問題
- 1. Angular $ http發送選項而不是PUT(不是POST)
- 2. $ http angularjs POST不發送我的數據?
- 3. 使用Http Post發送狀態數據是否是好習慣?
- 4. angularjs $ http post不發送數據
- 5. AngularJS HTTP POST不發送數據
- 6. 角4:HTTP不發送POST數據
- 7. 離子$ HTTP POST不發送數據
- 8. 是否應該通過HTTP-POST發送所有數據?
- 9. JMeter的3.0 HTTP PUT不發送RAW數據
- 10. Http Post不發佈數據
- 11. Backbone在Http Post中創建不發送數據給服務器?
- 12. 發送和使用HTTP POST
- 13. $ .ajax POST工作和$ .ajax PUT不會在向服務器發送數據時
- 14. 在HTTP POST中發送參數
- 15. 通過HTTP POST發送圖像數據
- 16. PHP HTTP頭髮送POST數據
- 17. 如何發送數據與$ http post
- 18. Android AsyncTask通過http發送數據Post
- 19. 發送HTTP POST數據與Objective-C
- 20. $ HTTP POST犯規發送數據
- 21. Django Rest框架:對HTTP POST和PUT的不同驗證
- 22. 骨幹model.save()在發送PUT而不是POST
- 23. Angular2 http put方法不發送formData
- 24. 如何在Ajax post請求中發送不同的JSON數據
- 25. 在打破REST的POST/PUT請求中是否將屬性作爲JSON發送?
- 26. HTTP PUT文件和數據
- 27. PHP不發送POST數據
- 28. IE不發送POST數據
- 29. Jquery .post不發送數據
- 30. Ajax post不發送數據
有趣的是,我讀過POST用於更新和PUT用於創建,例如在這裏接受的答案http://stackoverflow.com/questions/630453/put-vs-post-in-rest – DexCurl 2011-12-14 17:12:36
這實際上是一個常規問題而不是標準問題,我不會依賴於在這裏找到一個「接受」的答案作爲** any **的具體證據...... http://stackoverflow.com/a/2447740/555384。 ..如果我是你,我會細讀一些受歡迎的Restful apis,看看他們是如何做到的......我認爲你會發現這個答案是最常被接受的。 – jondavidjohn 2011-12-14 17:23:02