2013-11-15 95 views
0
  • 是否可撤銷刪除操作DELETE操作或UPDATE操作? (刪除的條目與GET不可見,除非設置了特殊標誌)如何使用CRUD實現可撤銷刪除?

  • 是否只有真正的刪除是DELETE操作?

  • 什麼是撤消刪除的最佳方法?由於UPDATE或作爲DELETEundo旗?

回答

1

我對REST的API設計方面的專家,但是這是一個謊言,所以我想我應該給我的想法(我認爲這個問題是純粹的意見反正爲主)

首先,考慮到你的決定影響不大,我不會爲了遵循一些「標準」(如果這種行爲有一個)而交易任何東西。然而,如果它是一種打字或者打字的情況,那麼我的想法就是這樣。

刪除應該是冪等的,如果刪除,它將永遠消失。所以「標準」決定了你不應該發佈DELETE,除非你真的想讓這個資源消失。

本質上你在做什麼是通過它的聲音歸檔資源,所以你移動資源。 RFC 2518定義了一個MOVE方法,在這裏可能很有用。然後,您可以將資源移入和移出「存檔」。

如果您不喜歡MOVE,可以修補資源以將其設置爲歸檔或軟刪除。除了可以指定資源的單個屬性外,PATCH與PUT基本相同,而不是將整個資源對象返回。

我認爲這是唯一的兩種擬合方法。如果你想堅持GET,POST,PUT,DELETE的3或4核心方法。我會說用DELETE去歸檔和完全刪除,用一個標誌來指定它是一個軟還是硬刪除,或者只是使它成爲第一個DELETE歸檔,而在歸檔上的DELETE是一個硬刪除。

說了這麼多,只要你的API被記錄下來,我不會太擔心。做你覺得最合適,最合理的事情。希望這給你一些思考,並幫助你做出決定。我不認爲你會得到一個「標準說XYZ」的答案。

+0

我目前實現了第一個'DELETE'檔案,第二個'DELETE'實際上刪除了它。一旦存檔,除非給出特殊標誌,否則不會通過'GET'顯示。所以,在某種程度上它被「刪除」。 –

+0

就像我說的,我認爲它是一個「無論什麼作品」的情況。 「標準」只是爲了試圖使程序符合一些標準,而不是一團糟。我認爲DELETE是完全可以接受的。只要你選擇的方法合理,我認爲這就夠了。不要陷入技術困境,你的時間更適合編碼:) – Lee