当前位置:  开发笔记 > 程序员 > 正文

实现RESTful切换操作的最佳方法是什么?

如何解决《实现RESTful切换操作的最佳方法是什么?》经验,为你挑选了2个好方法。

我正在重写一个旧的Rails应用程序,我认为我应该以RESTful方式进行,作为一种学习经验,如果没有别的.

我已经达成了一些切换布尔值的操作,例如,如果文章是否已发布.

在我做了几个动作之前:toggle_published,发布和取消发布.

它们非常易于使用:我只是在文章列表中链接到它们.

你会如何以RESTful方式做同样的事情?

我应该使用update-action,并构建一个迷你表单来替换之前使用的每个链接吗?我并不特别喜欢这个想法.



1> Van der Hoor..:

只是一个通知:

切换方法不是RESTful,因为HTTP PUT动词应该是幂等的(参见http://en.wikipedia.org/wiki/Idempotence#Examples).这意味着无论您多久执行一次方法,它都应该始终给出相同的结果.切换方法不遵循此原则,因为如果执行一次与执行两次相比,它不会产生相同的结果.

如果你想使它成为RESTful,你应该创建两个方法:一个用于设置,一个用于取消设置.

使应用程序RESTful不仅意味着您应该使用正确的HTTP动词.



2> Chris Nicola..:

我可能在嵌套的"切换资源"上使用PUT/DELETE或POST/DELETE解决它.也许不是100%完全宁静,但肯定很容易理解.

PUT or POST /articles/:id/published # Toggle published ON

DELETE /articles/:id/published # Toggle published OFF

GET /articles/:id/published # Get state RESTfully via status 200 (ON) or 404 (OFF)

可能看起来有点奇怪,但它在技术上是RESTful.

更新:一种(也许)更自然的方法也可能只是:

PUT or POST /articles/:id/published Data: { state: true/false } # Toggle published ON

您也可以将PATCH动词与我认为具有published属性的实际文章一起使用:

PATCH /articles/:id { published: true/false }

因为现在所有酷孩子都在使用PATCH.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有