Ruby on Rails Q & A


How to use the Rails API-only mode?

Rails API-only mode is a specialized configuration of Rails, streamlined for creating applications solely as an API backend. This mode strips out middleware and features unnecessary for serving API requests, resulting in a leaner application stack suitable for efficiently handling API requests.


  1. Creating an API-only Rails Application:

To start a new API-only Rails application, you can use the following command:



rails new my_api --api



This generates a Rails application with a minimal middleware stack and configurations tailored for API applications.


  1. Middleware Stack:

In API-only mode, several middlewares, such as cookies and sessions, which are unnecessary for stateless API applications, are excluded by default. This results in faster request processing suitable for APIs.


  1. Controllers:

In an API-only Rails application, controllers inherit from `ActionController::API` rather than `ActionController::Base`. This ensures that your controllers are equipped with only the tools necessary for handling API requests.


  1. Rendering Responses:

Typically, a Rails API will render responses in a format like JSON. You can utilize the `render` method as follows:



def show

  @user = User.find(params[:id])

  render json: @user




  1. Request Handling:

While cookies and session-based authentication are omitted, Rails API mode allows for other forms of authentication like token-based authentication, making it suitable for modern SPA (Single Page Application) and mobile applications.


  1. Bringing back Full Rails Features:

If you need to utilize some full Rails features in your API-only application, you can always add them back. For instance, to use cookies and sessions, you can include the necessary middleware and modules in the application.

Rails API-only mode provides a streamlined environment for developing API backends, making it easier and more efficient to build applications when you only need the backend capabilities of Rails. It’s an excellent choice for applications where the frontend is handled by frameworks like React, Vue, or Angular.

Previously at
Flag Argentina
time icon
Senior Software Engineer with a focus on remote work. Proficient in Ruby on Rails. Expertise spans y6ears in Ruby on Rails development, contributing to B2C financial solutions and data engineering.