RESTful删除策略

Lio*_*orH 11 rest

假设我有一个资源,在调用delete时可以有两种不同的行为

  1. 资源已删除.
  2. 资源被移动到回收站.

如何以REST兼容的方式对其进行建模?

我想到了以下解决方案:

DELETE /myresource     
Run Code Online (Sandbox Code Playgroud)

将资源移动到回收站(默认行为)

DELETE /myresource?force-delete=true  
Run Code Online (Sandbox Code Playgroud)

强制删除资源.

这是否符合REST标准?我在调用DELETE时从未在URL中看到过查询参数,是吗?

Avi*_*lax 11

你的想法很好,但我认为自定义请求标题会更合适一些.查询参数更适合参数.

自定义请求标头看起来像这样:

DELETE /myresource
X-Really-Delete: Yup
Run Code Online (Sandbox Code Playgroud)


ern*_*ern 4

纯粹的 REST 策略应该更喜欢不变的资源。在我看来,您不会通过附加参数来更改资源,所以这对我来说听起来是个好策略。

如果您要执行相同的操作,如下所示:

DELETE /myresource.force
Run Code Online (Sandbox Code Playgroud)

这就像另一种资源一样,这不是最佳的。

  • 这打破了 REST 的“规则”,因为您正在寻址不同的资源。与此同时,/myresource.json 和 /myresource.xml 也提供了相同数据的不同格式(朋友们,请使用您的接受标头!),但这不会很快消失。 (2认同)