RESTful网址,用于从垃圾箱中恢复操作

时间:2013-10-03 10:33:59

标签: rest

我一直在实施一个RESTful Web服务,它具有以下操作:

列出文章:

GET     /articles

删除文章(应仅删除选定的文章到垃圾箱):

DELETE  /articles

列出垃圾箱中的文章:

GET     /trash/articles

我必须执行将“/ trash / articles”中的“文章”还原为“/ articles”的操作。

这就是问题所在。你经常这样做吗?我必须使用什么网址?

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

DELETE  /trash/articles

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

第二种方式是

PUT     /trash/articles

哪个更奇怪,用户会对此操作的作用感到困惑。

我是REST的新手,所以请告知您如何正常使用它。我试图在谷歌搜索,但我不知道如何正确地问它,所以我没有得到一些有用的东西。

3 个答案:

答案 0 :(得分:4)

另一种选择可能是使用“查询参数”来定义一个“补充动作/动词”来覆盖你所拥有的这种“特殊条件”(假设HTTP动词不是很容易理解)。然后可以通过以下方式完成:

PUT /trash/articles?restore=true

这会使URI路径仍然抱怨REST指南(指资源,而不是编码“动作” - 如“恢复”)并且会改变你想做的“额外语义”(这是一个非常特殊的情况)到“查询参数”。 “查询参数”非常常用于“过滤”REST中的资源,而不是用于这种情况......但根据您的要求,这可能是一个合理的假设。

答案 1 :(得分:2)

我建议使用

PUT /restore/articles

PUT /restore/trash/articles

答案 2 :(得分:0)

迟到的答案,但在我看来,最好的方法是改变资源本身。

例如:

<article is_in_trash="true">
    <title>come title</title>
    <body>the article body</body>
    <date>1990-01-01</date>
</article>

因此,为了从“废纸篓”中删除文章,您可以简单地使用PUT更新版本的文章,其中is_in_trash="false"