3

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

列出文章:

GET     /articles

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

DELETE  /articles

列出垃圾箱中的文章:

GET     /trash/articles

我必须执行一个操作,将“文章”从“/trash/articles”恢复到“/articles”。

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

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

DELETE  /trash/articles

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

第二种方法是

PUT     /trash/articles

哪个更奇怪,用户会混淆这个操作的作用。

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

4

3 回答 3

5

另一种选择可能是使用“查询参数”来定义“补充动作/动词”来涵盖您拥有的这种“特殊条件”(鉴于 HTTP 动词不太容易涵盖这一点)。例如,这可以通过以下方式完成:

PUT /trash/articles?restore=true

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

于 2013-10-03T11:01:31.083 回答
2

我建议使用

PUT /restore/articles

或者

PUT /restore/trash/articles
于 2013-10-03T10:41:31.937 回答
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".

于 2013-11-03T02:12:23.780 回答