我正在尝试构建一个 RESTful webapp,在其中我使用 GET、POST、PUT 和 DELETE。但我有一个关于在这个特定应用程序中使用 DELETE 的问题。
先说一点背景:
我的 webapp 管理的通用实体也在另一个系统中管理(并且,它总是创建)。所以在我的 webapp 中,每个实体都将使用唯一的键存储在数据库中。但是我们通过 URL 访问它们的方式是使用另一个系统的唯一密钥。
我想一个简单的例子就可以清楚地说明这一点。取网址/entity/1
。这将显示其他系统中ID 为 1 的实体的信息,而不是我自己的系统。事实上,我系统中的 ID 将完全隐藏。1
在我自己的系统中,将没有用于访问 ID 为的实体的 URL 方案。
好的,现在我们知道了我的 webapp 的结构,让我们回到删除这些实体。
将有一种方法可以在我的系统中“删除”实体,但我在它周围加上引号,因为它实际上不会从数据库中删除它们。相反,它会使用一个属性标记它们,以防止它在您转到 时出现/entity/1
。
正因为如此,我觉得我应该使用PUT
(这种方式'删除'将是幂等的),因为我从数据的角度来看,只是设置一个属性。
所以,问题是:RESTful 方法是否对数据有保真度(在这种情况下,我很清楚我正在PUT
学习),或者应用程序中的数据表示(在这种情况下,我似乎正在DELETE
学习)?