【问题标题】:Combining API and web views in Rails 5在 Rails 5 中结合 API 和 Web 视图
【发布时间】:2016-11-10 01:31:13
【问题描述】:

从 Rails 5 开始,API gem 被合并。

现在,如果我有 API 可以通过网页上的 AJAX 调用,这会给我们留下什么?我在这里寻找最佳实践。当然,我可以自己使用 JSON 序列化器创建路由。然后,就有可能将 API 调用完全分离到另一个应用程序中。

由于 API 功能是通过继承 class ApplicationController < ActionController::API 调用的,我真的看不到将它与标准 ApplicationController < ActionController 调用相结合的选项。

我说的对吗?基于每个控制器的重载会起作用吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5


    【解决方案1】:

    如果你使用--api 模式,我认为你是对的——你不能将它们结合起来。这是设计使然 - ActionController::APIActionController::Metal 的子类。这个想法是让ActionController::API 非常瘦和轻量级。但是,通过启用 api 模式,您创建了一个“合同”,您的应用程序将只是一个 API,仅此而已。

    但是,如果您使用的是普通的 Rails 应用程序,您总是可以在同一个应用程序中同时拥有普通控制器和 API 控制器。然后,ActionController::API 类也将可用,因此您可以拥有一个 API 命名空间,其中仅包含轻量级 API 控制器,其余部分位于全局命名空间中。

    例如:

    class UsersController < ApplicationController
      * some code here *
    end
    

    和:

    class API::V1::UsersController < ApplicationController::API
      * some code here *
    end
    

    希望有帮助!

    【讨论】:

    • @BhushanLodha 我没有对此进行基准测试,但我怀疑缺少一些抽象层是否会对性能产生重大影响。如果有人有任何数据证明相反,我很高兴被证明是错误的。
    猜你喜欢
    • 2023-04-09
    • 2018-11-17
    • 1970-01-01
    • 2023-03-25
    • 2016-07-13
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    相关资源
    最近更新 更多