在电子书的制作过程中,用户必须编辑其内容,编辑其元数据,选择营销选项(如定价和发行)和出版。
我开始把每样东西都放在图书资源中(内容、元数据、营销选项等)
然后,流程的每一步(内容、元数据、营销)都是BooksController内部的一个动作。
但是,书籍在属性和行为方面开始有了很大增长。
我想知道通过创建单例资源来强制RESTfulness是否更好,每个资源都与各自的书相关联。
路线如下:
这似乎更优雅,因为这些“资源”中的每一个都是RESTful,每个属性都不多。但资源不是对象(市场?)。
您认为创建无意义的资源只是为了成为RESTful并保持代码的有序是可以的吗?
是否有更好的方法对相似属性进行分组,而不是从它们中创建资源?谢谢。
发布于 2011-05-29 03:24:41
我正在将一个大型的PHP应用程序移植到Rails上,而且我们有相当多的“临时”资源,比如admins能够以另一个用户的身份登录,以纠正问题等等。我总是抱怨这样的特性,比如以其他用户的身份登录,不应该像actions loginAsUser和logOutOfUserAccount那样捆绑到一个庞大的单块loginAsUser中。在我们的Rails应用程序中,我们试图尽可能多地可视化资源,所以使用我刚才给出的示例,我们有一个Admin名称空间,其中有一个UsersController (/admin/user/:id),而作为用户的子资源,我们有一个UserOverride资源(/admin/user/:user_id/override).我们只是在这个资源上发布和删除,这是非常合乎逻辑的。
所以回到你的例子,是的,我认为你应该把这些部分分解成单独的资源。显然,BookContent应该是图书的一个子资源,而MarketingOptions也是。
resources :books do
resource :content
resources :marketing_options
end等
这是一个更好的工作(更模块化)和更容易可视化,只要看一看路线。您还可以获得真正可预测的路径帮助程序的好处:
<%= link_to("Marketing Options", book_marketing_options_path(@book)) %>你不能试图强迫每一条可以想象的途径进入RESTful的资源思想.如果感觉是被迫的,那就很可能是。
有一个不错的博客文章,我想链接到那个(尽管一些不好的语法),实际上做了相当好的工作,向您展示如何考虑您的应用程序的资源.不过我找不到。如果/当我这么做的时候,我会添加一个评论。
编辑:只需重新阅读你原来的问题,并想澄清:资源!=在数据库中行。资源是任何你可以想象的“东西”.我知道这是一个非常宽泛的说法,但就像OOP中的对象一样,它不需要表示具体/材料,RESTful设计中的资源也不必表示。
https://stackoverflow.com/questions/6164996
复制相似问题