2

在我见过的所有企业应用程序中,几乎没有任何东西实际上从持久存储中删除,它只是用标志或删除日期标记为已删除。如果我正在设计这样的应用程序,我应该使用DELETE请求吗?如果应该使用它们,它们应该是什么样子?例如,如果我想说阻止信用卡,我会发出类似

POST /block_orders
card_number=123&reason=card_stolen

但是如果应用程序不使用所有可用的动词,它看起来就不是 RESTful。DELETE在企业中有什么位置吗?

DELETEUPD:例如,如果您可以GET稍后查看该资源的操作历史记录,那么允许该资源是一个好的设计吗?

4

3 回答 3

2

DELETE 在企业中占有一席之地。

使用 DELETE 请求将记录标记为已删除,并从 GET 请求中隐藏这些记录:就客户端而言,这些记录已被删除。

不用担心那些记录会被恢复;即使您从数据库中删除它们,它们仍然可以从备份中恢复。现在什么都没有真正删除。:-)

于 2013-07-10T12:21:25.400 回答
1

DELETE HTTP 方法传达了客户端删除资源的意图。服务器不需要实际物理删除它。随意标记它。

如果您不使用所有方法,REST 也不在乎。它只关心您是否错误地使用了一个。

于 2013-07-10T12:20:04.953 回答
1

对我来说,这听起来像是 PATCH / PUT:

如果您想更改信用卡的状态(阻止),请在此处使用 PATCH 更多信息

PATCH /users/<user_id>/credit_cards/<creditcard_id>/
JSON 
{
  "reason": "stolen"
}

如果您通过请求提供所有资源,要在知道其标识符的情况下对其进行编辑,请使用 PUT。

DELETE 与删除标志方法完美契合。只需在收到 DELETE 请求时更新该标志,如果用户尝试检索资源,只需向她/他提供该被阻止信用卡的可用信息。但是在您的情况下,我不会使用它来阻止信用卡...当用户想要取消该信用卡时,我会使用它,并且我也会使用软删除(删除标志),因为也许您对统计过程或某事...公司有理由不删除数据... :)

于 2013-07-10T12:33:04.087 回答