环境
- Rails: 6.1.4.1
- Ruby: 3.1
TL;DR
在 Gemfile 中打开 jbuilder 的注释,然后执行 bundle install
即可
步骤
- 新建
Rails
应用
$ rails new demo --api
- 编辑 Gemfile,打开 jbuilder 的注释
# 省略
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.7'
# 省略
- 执行
bundle install
$ bundle install
- 测试是否成功
$ rails g scaffold Book title
$ rails db:migrate
$ rails c
3.0.1 :001 > Book.create(title: "book1")
- 启动服务
$ rails s
- 在浏览器地址栏中输入 http://localhost:3000/books.json ,如果显示出 json 列表就表示成功了。
优化
每个链接后面带.json
后缀还是不太友好,可以在路由将默认响应格式设置为 json。将原本的路由文件改为如下
# config/routes.rb
Rails.application.routes.draw do
resources :books, defaults: { format: :json }
end
这时就可以直接访问 http://localhost:3000/books 了,如果需要所有的资源响应都默认为 json 格式,可以添加一个 scope 或 namespace(根据你的需求决定),并设置的默认响应格式。做法同普通资源的设置方式一样
# config/routes.rb
Rails.application.routes.draw do
scope :api, defaults: { format: :json } do
resources :books
end
end
访问 http://localhost:3000/api/books ,显示的结果跟之前一致。这样所有放在 api 下面的资源默认响应格式就都是 json 了