Why Use Rails for JSON APIs?

  • The reason most people use Rails is that it provides a set of defaults that allows developers to get up and running quickly, without having to make a lot of trivial decisions

Creating a new application

  • $ rails new my_api –api
  • it will do 3 main things for you:
  • not done
  • not done
  • not done

Changing an existing application

  • In config/application.rb: config.api_only = true
  • In config/environments/development.rb: config.debug_exception_response_format = :default (it will set to :api when config.api_only is ‘true’)
  • inside app/controllers/application_controller.rb:

– class ApplicationController < ActionController::API
– end

Choosing Middleware

An API application comes with the following middleware by default:

  • Rack::Sendfile
  • ActionDispatch::Static
  • ActionDispatch::Executor
  • ActiveSupport::Cache::Strategy::LocalCache::Middleware
  • Rack::Runtime
  • ActionDispatch::RequestId
  • ActionDispatch::RemoteIp
  • Rails::Rack::Logger
  • ActionDispatch::ShowExceptions
  • ActionDispatch::DebugExceptions
  • ActionDispatch::Reloader
  • ActionDispatch::Callbacks
  • ActiveRecord::Migration::CheckPending
  • Rack::Head
  • Rack::ConditionalGet
  • Rack::ETag
  • MyApi::Application::Routes

Using the Cache Middleware

  • using the stale? method: will compare the If-Modified-Since header in the request with @post.updated_at. If the header is newer than the last modified, this action will return a “304 Not Modified” response. Otherwise, it will render the response and include a Last-Modified header in it.