在 Rails 中合并 API 和网络视图 5

Combining API and web views in Rails 5

截至Rails5日,APIgem已合并。

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

因为 API 功能是通过继承调用的 class ApplicationController < ActionController::API 我真的看不到将它与标准 ApplicationController < ActionController 调用结合起来的选项。

我说的对吗?基于每个控制器的重载是否可行?

如果您使用 --api 模式,我认为您是对的 - 您无法将它们结合起来。这是设计使然 - ActionController::APIActionController::Metal 的子 class。这个想法是 ActionController::API 非常瘦和轻。但是,通过启用 api 模式 ,您创建了一个 "contract",您的应用程序将只是一个 API,仅此而已。

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

例如:

class UsersController < ApplicationController
  * some code here *
end

和:

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

希望对您有所帮助!