1
在REST API中,代理髮送DELETE請求到/ some-resource/666應該刪除操作考慮樂觀鎖定?
這應該足夠嗎?還是應該發送資源ID以及版本(用於樂觀鎖定),以便他們確保他們正在刪除他們閱讀的版本?
在REST API中,代理髮送DELETE請求到/ some-resource/666應該刪除操作考慮樂觀鎖定?
這應該足夠嗎?還是應該發送資源ID以及版本(用於樂觀鎖定),以便他們確保他們正在刪除他們閱讀的版本?
這很大程度上取決於上下文。
如果資源id
是服務器生成的,始終是唯一的(例如,它可能是POST /some-resource
返回一個新id
這是一個GUID的資源或者是一個SQL自動增量列),那麼你一定不要不需要指定任何具體的version
刪除和DELETE /some-resource/{id}
就足夠了。
如果資源id
是客戶端生成或僅目前現有的資源(可重複)中是唯一的,那麼你可以爲你的建議添加version
查詢參數。
id
值,你能否輕易地讓它們變成獨一無二的?如果是這樣,那麼首選參數DELETE
的解決方案。
在第一種情況下,我會說,指定版本也很有用,以確保用戶想要刪除的記錄仍然在爲用戶上次看到它相同的狀態。如果情況並非如此(即在此期間改變了,可能由其他人改變),那麼用戶可能不想再刪除它! – 2014-10-22 11:43:44
也許正確的答案是同時使用不可重複的ID(以確保用戶刪除正確的對象 - 對象可能已經被併發用戶刪除並重新創建)和版本字段(以確保用戶在何時刪除對象它具有與上次獲取它相同的狀態)。 – 2015-02-04 07:56:56