2012-03-02 46 views
0

比方說,我有一個REST方法來更新記錄。這顯然是一個POST,因爲它正在更新資源。但是,在同一動作中,需要創建審計或修訂歷史記錄表中的新記錄。PUT vs POST在審計表或修訂歷史情況下

這裏有標準或最佳做法,是否使用POST或PUT?

REST方法是來自用戶端發生了什麼,還是來自數據庫中發生的事情?

一種可能性是隻調用一個方法,該方法更新一個表中的記錄並在另一個表中創建新記錄。

另一種可能性是強制POST僅更新一個表,並且需要額外的方法在審計表中執行PUT。這迫使使用2種方法,並把責任交給開發者,我不太熱衷於此。

回答

1

PUT實際上建議用於替換(更新)現有記錄。

PUT方法要求封閉實體存儲在提供的Request-URI下。如果Request-URI指向一個已經存在的資源,那麼封閉的實體應該被認爲是駐留在原始服務器上的修改版本。

還有約POSTPUT之間的差別的一些信息:

的POST的根本區別和PUT請求反映在Request-URI的不同的含義。 POST請求中的URI標識將處理封閉實體的資源。該資源可能是數據接受過程,其他協議的入口或接受註釋的獨立實體。相比之下,PUT請求中的URI標識請求附帶的實體 - 用戶代理知道URI的目標是什麼,服務器不能嘗試將請求應用於其他資源。

請參閱here

對我來說,聽起來你應該使用PUT請求來更新資源。審計是這樣做的一個副作用,所以它應該作爲PUT的一部分來處理新資源。