可撤消是删除DELETE
操作还是UPDATE
操作?
(除非设置了特殊标志,否则GET
无法看到已删除的条目)
真正的删除只是DELETE
操作吗?
撤消删除的最佳方法是什么?作为UPDATE
或带有DELETE
旗帜的undo
?
答案 0 :(得分:1)
我不是RESTful API设计的专家,但这是一个很糟糕的,所以我想我会给出我的想法(我相信这个问题纯粹基于观点)
首先,鉴于您的决定影响很小,我不会按照一些“标准”(如果有一种类型的行动)进行交易。然而,如果它是一个键入一个或另一个的情况,继承我的想法。
DELETE应该是幂等的,如果删除,它就会永远消失。所以“标准”规定你不应该发出DELETE,除非你真的想要那个资源消失。
基本上你正在做的是通过它的声音归档资源,所以你移动资源。 RFC 2518
定义了一个MOVE方法,在这里可能很有用。然后,您可以将资源移入和移出“存档”。
如果您不喜欢MOVE,可以修补资源以将其设置为存档或软删除。 PATCH基本上与PUT相同,除了您可以指定资源的单个属性,而不是将整个资源对象PUT回来。
我认为这是唯一的两种拟合方法。如果你想坚持GET,POST,PUT,DELETE的3或4核心方法。我会说删除存档和完全删除,用一个标志来指定它是软删除还是硬删除,或者只是使它成为第一个DELETE存档,并且存档上的DELETE是一个硬删除。
说了这么多,只要你的API被记录下来,我就不会太担心。做任何你觉得最合适和最明智的事。希望这能让你有所收获,并帮助你做出决定。我不认为你会得到一个“标准说做XYZ”的答案。