Rails 6 API 模式使用 JBuilder

环境

  • Rails: 6.1.4.1
  • Ruby: 3.1

TL;DR

在 Gemfile 中打开 jbuilder 的注释,然后执行 bundle install 即可


步骤

  1. 新建Rails应用
$ rails new demo --api
  1. 编辑 Gemfile,打开 jbuilder 的注释
# 省略

# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.7'

# 省略
  1. 执行bundle install
$ bundle install 
  1. 测试是否成功
$ rails g scaffold Book title
$ rails db:migrate

$ rails c 
3.0.1 :001 >  Book.create(title: "book1")

  1. 启动服务
$ rails s 
  1. 在浏览器地址栏中输入 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 了

点赞

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注