-
可撤消的删除是
DELETE
操作还是UPDATE
操作?(除非设置特殊标志,否则删除的条目在GET
中不可见) -
只有真正的删除才是
DELETE
操作吗? -
撤消删除的最佳方法是什么?作为
UPDATE
还是作为带有undo
旗帜的DELETE
?
我不是 RESTful API 设计方面的专家,但这是一个愚蠢的问题,所以我想我会给出我的想法(我相信这个问题纯粹是基于意见的)
首先,鉴于您的决定的影响很小,我不会为了遵循一些"标准"而交易任何东西(如果有此类行动的话)。但是,如果是输入一件事或另一件事的情况,这是我的想法。
DELETE 应该是幂等的,如果你删除,它就永远消失了。因此,"标准"规定您不应该发布 DELETE,除非您真的希望该资源消失。
从本质上讲,您正在做的是通过声音存档资源,因此您移动了资源。 RFC 2518
定义一个 MOVE 方法在这里可能很有用。然后,您可以将资源移入和移出"存档"。
如果您不喜欢 MOVE,可以修补资源以将其设置为存档或软删除。PATCH 本质上与 PUT 相同,只是您可以指定资源的单个属性,而不是 PUT 返回整个资源对象。
我认为这是仅有的两种合适的方法。如果你想坚持使用获取、发布、放置、删除的 3 或 4 个核心方法。我会说使用 DELETE 来存档和完全删除,要么用一个标志来指定它是软删除还是硬删除,或者只是让它成为第一个 DELETE 存档,而存档上的 DELETE 是硬删除。
说了这么多,只要你的API有记录,我就不会太担心。做任何你觉得最合适和最明智的事情。希望这能给你一些可以思考的东西,并帮助你做出决定。我不认为你会得到一个"标准说做XYZ"的答案。