我一直在实施一个RESTful Web服务,它具有以下操作:
列出文章:
GET /articles
删除文章(应仅删除选定的文章到垃圾箱):
DELETE /articles
列出垃圾箱中的文章:
GET /trash/articles
我必须执行将“/ trash / articles”中的“文章”还原为“/ articles”的操作。
这就是问题所在。你经常这样做吗?我必须使用什么网址?
我想出了两种方法。第一个是:
DELETE /trash/articles
但它感觉很奇怪,用户可以像“永久删除它,不要恢复”那样阅读它。
第二种方式是
PUT /trash/articles
哪个更奇怪,用户会对此操作的作用感到困惑。
我是REST的新手,所以请告知您如何正常使用它。我试图在谷歌搜索,但我不知道如何正确地问它,所以我没有得到一些有用的东西。
答案 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"
。