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

问题描述 投票:2回答:3

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

列表文章:

GET     /articles

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

DELETE  /articles

列出垃圾桶中的文章:

GET     /trash/articles

我必须实现一个操作,将“/ trash / articles”中的“文章”恢复回“/ articles”。

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

我想出了两种方法。首先是:

DELETE  /trash/articles

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

第二种方式是

PUT     /trash/articles

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

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

rest
3个回答
4
投票

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

PUT /trash/articles?restore=true

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


2
投票

我建议使用

PUT /restore/articles

要么

PUT /restore/trash/articles

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"

© www.soinside.com 2019 - 2024. All rights reserved.