首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅仅为了保持RESTful,创建无意义的单例资源可以吗?Rails

仅仅为了保持RESTful,创建无意义的单例资源可以吗?Rails
EN

Stack Overflow用户
提问于 2011-05-28 23:26:28
回答 1查看 223关注 0票数 6

在电子书的制作过程中,用户必须编辑其内容,编辑其元数据,选择营销选项(如定价和发行)和出版。

我开始把每样东西都放在图书资源中(内容、元数据、营销选项等)

然后,流程的每一步(内容、元数据、营销)都是BooksController内部的一个动作。

但是,书籍在属性和行为方面开始有了很大增长。

我想知道通过创建单例资源来强制RESTfulness是否更好,每个资源都与各自的书相关联。

路线如下:

  • /book/12/content/edit
  • /book/12/metadata/edit
  • /book/12/marketing/edit

这似乎更优雅,因为这些“资源”中的每一个都是RESTful,每个属性都不多。但资源不是对象(市场?)。

您认为创建无意义的资源只是为了成为RESTful并保持代码的有序是可以的吗?

是否有更好的方法对相似属性进行分组,而不是从它们中创建资源?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-29 03:24:41

我正在将一个大型的PHP应用程序移植到Rails上,而且我们有相当多的“临时”资源,比如admins能够以另一个用户的身份登录,以纠正问题等等。我总是抱怨这样的特性,比如以其他用户的身份登录,不应该像actions loginAsUserlogOutOfUserAccount那样捆绑到一个庞大的单块loginAsUser中。在我们的Rails应用程序中,我们试图尽可能多地可视化资源,所以使用我刚才给出的示例,我们有一个Admin名称空间,其中有一个UsersController (/admin/user/:id),而作为用户的子资源,我们有一个UserOverride资源(/admin/user/:user_id/override).我们只是在这个资源上发布和删除,这是非常合乎逻辑的。

所以回到你的例子,是的,我认为你应该把这些部分分解成单独的资源。显然,BookContent应该是图书的一个子资源,而MarketingOptions也是。

代码语言:javascript
复制
resources :books do
  resource :content
  resources :marketing_options
end

这是一个更好的工作(更模块化)和更容易可视化,只要看一看路线。您还可以获得真正可预测的路径帮助程序的好处:

代码语言:javascript
复制
<%= link_to("Marketing Options", book_marketing_options_path(@book)) %>

你不能试图强迫每一条可以想象的途径进入RESTful的资源思想.如果感觉是被迫的,那就很可能是。

有一个不错的博客文章,我想链接到那个(尽管一些不好的语法),实际上做了相当好的工作,向您展示如何考虑您的应用程序的资源.不过我找不到。如果/当我这么做的时候,我会添加一个评论。

编辑:只需重新阅读你原来的问题,并想澄清:资源!=在数据库中行。资源是任何你可以想象的“东西”.我知道这是一个非常宽泛的说法,但就像OOP中的对象一样,它不需要表示具体/材料,RESTful设计中的资源也不必表示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6164996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档