您如何处理RESTful设计中的资源“操作”,例如标记电子邮件读取?

时间:2009-01-27 21:22:23

标签: ruby-on-rails rest states

如何在RESTful设计中集成这样的东西?

  • 将电子邮件标记为已读
  • 投票“
  • 报告消息不合适

此外,你会怎样做,以便人们可以制作一个小图标链接或按钮来执行操作而不需要过多的魔法?

2 个答案:

答案 0 :(得分:4)

这取决于你在做什么。有时,只需将您的观点从“对资源执行操作”转移到“创建另一个不同但相关的资源”。

对故事进行投票很容易:您可以创建,审核等的投票资源。与报告相同。这可以应用于任何事情,而不是将订单标记为已提交,而是提交提交等。关键是要弄清楚如何将动词转换为名词。

将电子邮件标记为已读取有点不同。我要做的是使用虚拟属性:在模型上创建自己的setter方法(例如mark_as_read =)将允许您通过#Update操作中的params数组传递mark_as_read。

以一个故事投票为例。你要做的是创建一个属于故事的投票模型。创建一个投票控制器,并将其嵌套在路径文件中的Stories控制器中。然后,您可以使用嵌套的资源路径(传入您的Story记录)轻松创建作用于个别故事的投票。

请注意,资源不一定必须由数据库模型支持,尽管它是正确的形式。在这种情况下,您可以随时修改Story记录,同时保持RESTfulness,并在需要时轻松扩展为完整模型。

答案 1 :(得分:0)

对于任何REST来说,这都是不可或缺的资源:

http://oreilly.com/catalog/9780596529260/ restful web services