我从rails 5开始,我是rails的菜鸟。我想创建一个简单的 API,但我想有视图(例如活动管理员)。我使用代码"rails new backend"命令找到了自动生成的 API。
有没有办法使用此命令自动生成视图而不仅仅是 Json 响应?
我可能没有答案,但我发现这可能是这个问题的更好答案。
方法:
子类APIController
来自ActionController::API
,而不是ApplicationController
,使ApplicationController
继承自ActionController::Base
。
您可以包含Rack::MethodOverride
中间件。
在接下来的一周里,我会尝试构建类似的东西,主要是为了了解ActiveAdmin
和一些更新的 Rails 方法。
使用标准的ActiveAdmin界面不适用于API应用程序,因为这些(根据定义)会切断表示层,即视图/js/等的所有宝石。
但它会反过来工作:--api 几乎是一个完整的 Rails 应用程序的子集,并且默认带有 json 渲染。我说"几乎"是因为一些细节需要调整,例如(可能)cors和csrf设置。
您可以在大约一分钟内获得一个正常运行的 rails 5 应用程序,为 .json 提供服务:
rails new foo
rails db:setup
rails generate scaffold Post title:string body:text
rails db:migrate
rails server
-> http://localhost:3000/posts/index.json
除了阅读文档和一些教程之外,您还应该生成两个应用程序,一个带有 --api,一个没有,添加模型/视图/控制器脚手架并逐步完成差异。然后,可以将 API 模式的自定义项混合搭配到应用中。
为 Rails 5 API 应用程序启用 Active Admin
1. 将视图渲染控制器与 API 控制器分开
- 活动管理员要求
ApplicationController
从ActionController::Base
继承。 - API 控制器仍应继承自
ActionController::API
使用以下方法
class ApplicationController < ActionController::Base
class APIController < ActionController::API
其中任何特定于 API 的控制器都继承自 APIController
.
2. 启用flash
中间件
内部config/application.rb
module MyApp
class Application < Rails::Application
# ...
# add this =>
config.middleware.use ActionDispatch::Flash
end
end
3. (用于设计身份验证)启用会话管理
内部config/application.rb
module MyApp
class Application < Rails::Application
# ...
# add these =>
config.middleware.use ActionDispatch::Cookies
config.middleware.use ActionDispatch::Session::CookieStore
end
end
这是完整指南