【问题标题】:Rails 4 best practice for APIAPI 的 Rails 4 最佳实践
【发布时间】:2015-08-26 07:42:15
【问题描述】:

我正在将 API 构建到 Web 应用程序上,我有几个关于如何设置的问题。

某些记录无法通过网络应用程序本身创建,但 API 不仅可以完全控制创建,还可以完全控制其他网络应用程序功能。

假设我有 3 个 rails 对象:User has_one Business has_many Ratings

在网络应用程序中,用户对 UsersBusinesses 具有完全的 CRUD 控制权,但对 Ratings 仅有 RUD 控制权(没有创建)。

在 API 中,对所有三个对象都有完全的 CRUD 控制。

那么,话虽如此,我应该如何构建我的文件?乍一看,有人会认为我会为所有三个对象创建普通控制器,并仅限制 receipts_controller.rb 中的“创建”事件以进行 JSON 访问 (API)。但是,如果我为我的 API (myapp.com/api/v1/receipt.json) 使用命名空间,我不需要为我的收据对象使用单独的控制器吗?

在写这篇文章时,我想到了像正常一样命名 API 并让 /api/v1/receipts_controller.rb 文件扩展正常的 /receipts_controller.rb ——这是正确的方法吗?

显然,我不希望网络应用和 API 在不同的控制器上运行,这就是为什么我正在就此事寻求一些建议。

【问题讨论】:

    标签: json api ruby-on-rails-4


    【解决方案1】:

    不确定我是否理解您的解释。这是我的 2 美分。我更喜欢为 API 和他的 Web App 设置单独的控制器。 有几个原因:

    1. 当您开始发布新版本时,您不想更改 Web 应用程序控制器,也不希望有太多 if 条件。这是纯粹的邪恶。您只需要创建~/v2/~ 并将所有逻辑都放在那里。

    2. Skinny Controller 是关键,混合使用 API 和 Web App Controller 会使您的控制器更难调试,并且您可能会使用太多方法

    3. 拥有不同的 API 控制器使您能够对其实施不同的安全策略,而无需理会您的 Web 应用程序。

    【讨论】:

      猜你喜欢
      • 2015-01-17
      • 2014-03-15
      • 1970-01-01
      • 2015-02-07
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多