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