RESTful URL,用于从垃圾箱还原操作

was*_*tim 3 rest

我一直在实现具有以下操作的RESTful Web服务:

列出文章:

GET     /articles
Run Code Online (Sandbox Code Playgroud)

删除文章(只能将选定的文章删除到垃圾箱中):

DELETE  /articles
Run Code Online (Sandbox Code Playgroud)

列出垃圾箱中的文章:

GET     /trash/articles
Run Code Online (Sandbox Code Playgroud)

我必须执行一项操作,以将“文章”从“ /垃圾箱/文章”还原回“ /文章”。

这是问题。你平时怎么做?我必须使用什么网址?

我想出了两种方法。第一个是:

DELETE  /trash/articles
Run Code Online (Sandbox Code Playgroud)

但是感觉很奇怪,用户可以像“永久删除它,不要还原”那样阅读它。

第二种方法是

PUT     /trash/articles
Run Code Online (Sandbox Code Playgroud)

这更奇怪,并且用户将对该操作的执行感到困惑。

我是REST的新手,所以请建议您通常如何做。我尝试在Google中搜索,但不知道如何正确查询,因此没有得到任何有用的信息。

emg*_*lva 5

另一种选择是使用“查询参数”来定义一个“补充动作/动词”,以覆盖您拥有的“特殊条件”(假设HTTP动词不太容易覆盖)。然后可以例如通过以下方式完成此操作:

PUT /trash/articles?restore=true

这将使URI路径仍然受到REST准则的抱怨(指的是资源,而不是对“操作”进行编码-如“恢复”),并且会改变您想做的事情的“额外语义”(这是非常特殊的情况) )添加到“查询参数”。“查询参数”非常常用于REST中的“过滤”资源,在这种情况下使用的不是很多...但是,考虑到您的要求,这也许是一个合理的假设。