gpt4 book ai didi

ruby-on-rails - 仅仅为了保持 RESTful 就可以创建无意义的单例资源吗? rails

转载 作者:行者123 更新时间:2023-12-03 16:07:53 25 4
gpt4 key购买 nike

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

我开始将所有内容都放在 Book 资源中(内容、元数据、营销选项等)

然后流程的每一步(内容、元数据、营销)都是 BooksController 中的一个 Action 。

但是书籍在属性和 Action 方面开始有了很大的增长。

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

路线将是:

  • /book/12/content/edit
  • /book/12/元数据/编辑
  • /book/12/marketing/edit

  • 这似乎更优雅,因为这些“资源”中的每一个都是 RESTful 并且每个属性都很少。但资源不是对象(营销?)。

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

    有没有比用它们创建资源更好的方法来对相似的属性进行分组?谢谢。

    最佳答案

    我正在将一个大型 PHP 应用程序移植到 Rails,我们有相当多的“临时”资源,例如管理员可以在获得他们许可的情况下以其他用户身份登录,以纠正问题等。我总是提示以其他用户身份登录等功能不应捆绑到一个巨大的单体中 AdminController作为行动loginAsUserlogOutOfUserAccount .在我们的 Rails 应用程序中,我们尝试尽可能多地可视化资源,因此使用我刚刚给出的示例,我们有一个 Admin 命名空间,在它下面有一个 UsersController (/admin/users/:id) 并且作为用户的子资源,我们有一个 UserOverride资源 (/admin/users/:user_id/override)... 感觉很合乎逻辑,我们只是 POST 和 DELETE 到这个资源。

    所以回到你的例子,是的,我认为你应该把这些部分分解成单独的资源。看起来 BookContent 似乎应该是 Book 的子资源,MarketingOptions 也是。

    resources :books do
    resource :content
    resources :marketing_options
    end

    ETC

    这既可以更好地使用(更模块化),也更容易仅通过查看路线来可视化。您还可以获得真正可预测的路径助手的好处:
    <%= link_to("Marketing Options", book_marketing_options_path(@book)) %>

    但是,您不能尝试将每条可以想象的路线都强制转换为 RESTful 资源意识形态……如果感觉像是被迫的,那么它可能是。

    有一篇不错的博客文章我想链接到它(尽管语法很差)实际上很好地向您展示了如何从资源方面考虑您的应用程序......但我找不到它。如果/当我这样做时,我会添加评论。

    编辑 |只是重新阅读您的原始问题并想澄清:资源!=数据库中的行。资源是您可以设想为“事物”的任何东西......我知道这是一个非常广泛的陈述,但就像 OOP 中的对象不必表示具体/ Material 一样,RESTful 设计中的资源也不必。

    关于ruby-on-rails - 仅仅为了保持 RESTful 就可以创建无意义的单例资源吗? rails ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6164996/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com