Build Rails 5 API (Part 1)
Create new project using "--api" mode
mkdir myapi cd myapi touch .ruby-version touch .ruby-gemset echo ruby-2.7.0 > .ruby-version echo myapi > .ruby-gemset cd ../myapi gem install rails -v 6.0.0 rails new . -T --api gem install bundler bundle rake db:create db:migrate
Create model Book
rails g migration CreateBooks
class CreateBooks < ActiveRecord::Migration[5.0] def change create_table :books do |t| t.string :title t.float :price t.string :author end end end
# config/initializers/active_model_serializer.rb ActiveModel::Serializer.config.adapter = :json
# config/routes.rb Rails.application.routes.draw do resources :books end
# app/models/book.rb class Book < ActiveRecord::Base end
Don't forget create a few records
Serializing JSON responses
# https://github.com/rails-api/active_model_serializers gem 'active_model_serializers'
rails g serializer book
# app/serializers/book_serializer.rb class BookSerializer < ActiveModel::Serializer attributes :id, :custom_title, :price def custom_title "#{ @object.title } (#{ @object.author })" end end
# app/controllers/books_controller.rb class BooksController < ApplicationController def index render json: Book.all # Using "include" to response more data. eg: include: ['chapters.locations'] end end
Enjoy your first API
http://localhost:3000/books.json