您将如何将这样的东西集成到 RESTful 设计中?
- 将电子邮件标记为已读
- 为故事投票
- 举报不当消息
此外,您将如何做到这一点,使得人们可以制作一个小图标链接或按钮来执行操作而无需太多的魔法?
您将如何将这样的东西集成到 RESTful 设计中?
此外,您将如何做到这一点,使得人们可以制作一个小图标链接或按钮来执行操作而无需太多的魔法?
这取决于你在做什么。有时只需将您的观点从“对资源执行操作”转变为“创建另一个不同但相关的资源”。
对故事进行投票很容易:您可以创建、查看等投票资源。报告也是如此。这可以应用于任何事情,而不是将订单标记为已提交,而是将有提交等。关键是要弄清楚如何将您的动词转换为名词。
将电子邮件标记为已读有点不同。为此我要做的是使用虚拟属性:在模型上创建自己的设置方法(例如,mark_as_read=)将允许您在#Update 操作中通过 params 数组传递 mark_as_read。
以对故事进行投票为例。您要做的是创建一个属于 Story 的 Vote 模型。创建一个 Votes 控制器,并将其嵌套在您的路由文件中的 Stories 控制器之外。然后,您可以使用嵌套资源路由(传递您的故事记录)轻松创建范围为单个故事的投票。
请注意,资源不一定必须由数据库模型支持,尽管它是正确的形式。在这种情况下,您始终可以简单地修改 Story 记录,同时保持 RESTful 和在需要时轻松扩展为完整模型的能力。
这是任何 REST 不可或缺的资源: