是否可撤銷刪除操作
DELETE
操作或UPDATE
操作? (刪除的條目與GET
不可見,除非設置了特殊標誌)如何使用CRUD實現可撤銷刪除?是否只有真正的刪除是
DELETE
操作?什麼是撤消刪除的最佳方法?由於
UPDATE
或作爲DELETE
與undo
旗?
0
A
回答
1
我對REST的API設計方面的專家,但是這是一個謊言,所以我想我應該給我的想法(我認爲這個問題是純粹的意見反正爲主)
首先,考慮到你的決定影響不大,我不會爲了遵循一些「標準」(如果這種行爲有一個)而交易任何東西。然而,如果它是一種打字或者打字的情況,那麼我的想法就是這樣。
刪除應該是冪等的,如果刪除,它將永遠消失。所以「標準」決定了你不應該發佈DELETE,除非你真的想讓這個資源消失。
本質上你在做什麼是通過它的聲音歸檔資源,所以你移動資源。 RFC 2518
定義了一個MOVE方法,在這裏可能很有用。然後,您可以將資源移入和移出「存檔」。
如果您不喜歡MOVE,可以修補資源以將其設置爲歸檔或軟刪除。除了可以指定資源的單個屬性外,PATCH與PUT基本相同,而不是將整個資源對象返回。
我認爲這是唯一的兩種擬合方法。如果你想堅持GET,POST,PUT,DELETE的3或4核心方法。我會說用DELETE去歸檔和完全刪除,用一個標誌來指定它是一個軟還是硬刪除,或者只是使它成爲第一個DELETE歸檔,而在歸檔上的DELETE是一個硬刪除。
說了這麼多,只要你的API被記錄下來,我不會太擔心。做你覺得最合適,最合理的事情。希望這給你一些思考,並幫助你做出決定。我不認爲你會得到一個「標準說XYZ」的答案。
相關問題
- 1. 使用Snackbar.Callback撤銷刪除操作
- 2. 如何撤銷中間文件刪除
- 3. 使用MemberwiseClone實現撤銷/重做
- 4. 如何實現撤銷功能
- 5. 實現可撤銷命令 - Java
- 6. 撤銷SVN刪除./* --force
- 7. 刪除/刪除/撤銷零件
- 8. 實現撤銷/重做
- 9. 撤銷PHP CRUD應用程序
- 10. 是否可以使用JavascriptMVC實現撤銷/重做引擎?
- 11. 禁用撤銷創建/刪除NSManagedObject
- 12. 如何使用Codeigniter實現CRUD操作?
- 13. 如何在不使用內置撤銷管理器的情況下撤銷NSManagedObject刪除?
- 14. 如何用拼接「撤銷」刪除的元素?
- 15. 刪除WebView的NSUndoManager的撤銷操作
- 16. 在DataGridView上撤銷已刪除的行
- 17. 在QgraphicsScene上撤銷或刪除線條
- 18. 如何使用NSTextview實現撤消
- 19. 如何使用NSUndoManager實現撤消?
- 20. 如何在MVVM應用程序中實現撤銷/重做?
- 21. 實現撤銷/重做標籤JEditorPanes
- 22. 在MVC中實現撤銷/重做
- 23. 在TextArea中實現撤銷/重做
- 24. 如何刪除和撤消使用javascript刪除gridview行?
- 25. 如何撤消svn刪除
- 26. 是否可以撤銷hg清除?
- 27. 如何在git commit中撤銷已刪除的文件夾
- 28. 你如何撤銷rails中的刪除腳手架?
- 29. REVOKE_ACCESS:如何刪除'撤銷'繼承的ACE?
- 30. 如何管理撤銷刪除與數據庫
我目前實現了第一個'DELETE'檔案,第二個'DELETE'實際上刪除了它。一旦存檔,除非給出特殊標誌,否則不會通過'GET'顯示。所以,在某種程度上它被「刪除」。 –
就像我說的,我認爲它是一個「無論什麼作品」的情況。 「標準」只是爲了試圖使程序符合一些標準,而不是一團糟。我認爲DELETE是完全可以接受的。只要你選擇的方法合理,我認爲這就夠了。不要陷入技術困境,你的時間更適合編碼:) – Lee