ActionController :: API和ApplicationController有什么区别

Bla*_*man 0 ruby-on-rails

我有一些用于API响应的控制器,但该应用程序的其余部分是常规的Rails 5应用程序。

如果我将基类更改为

ApplicationController::API
Run Code Online (Sandbox Code Playgroud)

ApplicationController
Run Code Online (Sandbox Code Playgroud)

我注意到如果我执行:: API,则需要在渲染时添加json:,然后才可以渲染msg

从API继承时,请求/响应的背后是否更精简?

class Api::V1::TestController < ????
  def index
    msg = {status: "ok", message: "hello world"}
    render json: msg
  end
end
Run Code Online (Sandbox Code Playgroud)

jvi*_*ian 5

文档(这是在googlies上的第一击)...

API Controller是ActionController :: Base的轻量级版本,是为不需要完全Rails控制器提供的所有功能的应用程序创建的,允许您创建仅具有仅API应用程序所需功能的控制器。

API控制器与普通控制器的不同之处在于,默认情况下,它不包含通常仅浏览器访问所需的许多功能:布局和模板渲染,Cookie,会话,Flash,资产等。这使整个控制器堆栈变薄,适合API应用程序。这并不意味着您将不需要这些功能:可以将它们全部包含在应用程序中,它们也不是默认API控制器堆栈的一部分。