我重讀了HTTP規範。當PUT是無操作時,HTTP服務器應該返回200嗎?
它聲明如果已經創建了資源,PUT應該被視爲修改的請求。
它聲明PUT在成功時應該返回200或204,但不會創建資源。
它聲明PUT應該是冪等的,並且在使用相同的相同請求多次調用時不會產生不需要的副作用。
它似乎沒有說明的是, -PUT應該返回成功,當它是一個冪等的場景,沒有副作用,並且只有成功(而不是例如409衝突響應服務器檢測到無操作PUT請求服務器不允許禁止操作的地方)。
我的問題是,最好的辦法是什麼? 或者:
- 我錯過了什麼嗎?無論是在HTTP規範還是其他衆所周知的REST準則中,我沒有看到什麼?
或
- 假設你知道沒什麼我錯過了,你有什麼關於200是否應該是HTTP的意見,建議的行爲嗎?爲什麼?你能想到有什麼好的理由不會爲了沒有操作而返回200/204嗎?
如果你的系統中沒有任何操作(我假設你的意思是指一個現有資源沒有真正改變其值)的PUT是'成功',它應該返回200.我沒有看到任何東西在你的除此之外的引文。 – EJP 2014-10-28 22:57:51
所有其他2xx代碼在你的情況下絕對沒有意義,所以200或204似乎可以 – 2014-10-28 23:01:40
基本上是啊,它不會改變價值,我不明白爲什麼這不會被視爲成功..除非有人有一個很好的論點?:) – 2014-10-30 18:50:21