API-only setup creates a Rails app that only serves data, not web pages. It is faster and simpler for backend services.
When building a backend that only sends JSON data to a frontend app.
When creating a service for mobile apps to get data.
When you want a lightweight server without views or assets.
When your frontend is handled by another framework like React or Vue.
Syntax
Ruby on Rails
rails new app_name --api
This command creates a Rails app optimized for APIs.
It skips views, helpers, and assets by default.
Examples
Creates a new API-only Rails app named my_api.
Ruby on Rails
rails new my_api --api
Creates an API-only app with PostgreSQL as the database.
Ruby on Rails
rails new blog_api --api --database=postgresql
Sample Program
This example shows how to create a new API-only Rails app, add a simple controller that returns JSON, and set a route to access it.
Ruby on Rails
# Terminal commands to create and run an API-only Rails app
rails new sample_api --api
cd sample_api
rails server
# app/controllers/application_controller.rbclass ApplicationController < ActionController::API
end
# app/controllers/welcome_controller.rbclass WelcomeController < ApplicationController
def index
render json: { message: 'Hello from API-only app!' }
end
end
# config/routes.rb
Rails.application.routes.draw do
get '/', to: 'welcome#index'
end
OutputSuccess
Important Notes
API-only apps do not include middleware for sessions or cookies by default.
You can add back features if needed by modifying the middleware stack.
Summary
Use rails new app_name --api to create a lightweight backend.
API-only apps focus on JSON responses, no HTML views.
Great for mobile apps or frontend frameworks needing data from Rails.
Practice
(1/5)
1. What is the main purpose of creating a Rails application with the --api flag?
easy
A. To generate a full Rails app with HTML views and assets
B. To enable automatic frontend scaffolding
C. To create a lightweight backend that serves JSON responses only
D. To create a desktop application using Rails
Solution
Step 1: Understand the --api flag purpose
The --api flag creates a Rails app optimized for API use, focusing on JSON responses without HTML views.
Step 2: Compare with full Rails app
Full Rails apps include views and assets, but API-only apps skip these for lightweight backend.
Final Answer:
To create a lightweight backend that serves JSON responses only -> Option C
Quick Check:
API-only app = JSON backend [OK]
Hint: API-only means JSON backend, no HTML views [OK]
Common Mistakes:
Thinking API-only apps generate HTML views
Confusing API-only with full Rails app
Assuming API-only creates frontend code
2. Which command correctly creates a new Rails API-only application named my_api?
easy
A. rails new my_api --full
B. rails new my_api --api
C. rails generate api my_api
D. rails create my_api --api-only
Solution
Step 1: Recall the Rails new command syntax
The correct way to create an API-only app is using rails new app_name --api.
Step 2: Match the command with the app name
Using rails new my_api --api matches the requirement exactly.
Final Answer:
rails new my_api --api -> Option B
Quick Check:
rails new + app name + --api = correct command [OK]
Hint: Use 'rails new app_name --api' to create API apps [OK]
Common Mistakes:
Using --full instead of --api
Using 'generate' instead of 'new'
Incorrect flag like --api-only
3. Given this Rails API-only controller code, what will be the JSON response when accessing /api/greetings?
class Api::GreetingsController < ApplicationController
def index
render json: { message: 'Hello, API!' }
end
end
medium
A. Redirect to root path
B.
Hello, API!
C. Error: Missing view template
D. {"message":"Hello, API!"}
Solution
Step 1: Analyze the controller action
The index action uses render json: to send a JSON response with a message.
Step 2: Understand API-only behavior
API-only apps respond with JSON, so the output is the JSON string of the hash.
Final Answer:
{"message":"Hello, API!"} -> Option D
Quick Check:
render json = JSON output [OK]
Hint: render json sends JSON, not HTML [OK]
Common Mistakes:
Expecting HTML output in API-only app
Assuming missing view causes error
Thinking it redirects automatically
4. You created a Rails API-only app but get an error: ActionController::UnknownFormat when requesting JSON. What is the likely cause?
medium
A. The controller action does not specify render json:
B. The app was created without the --api flag
C. The route is missing in routes.rb
D. The database is not migrated
Solution
Step 1: Understand the error meaning
ActionController::UnknownFormat means the controller does not know how to respond to the requested format.
Step 2: Check controller response method
If the action lacks render json:, Rails can't respond with JSON, causing this error.
Final Answer:
The controller action does not specify render json: -> Option A
Quick Check:
UnknownFormat = missing render json [OK]
Hint: Always use render json in API controllers [OK]
Common Mistakes:
Assuming missing --api flag causes this error
Thinking missing route causes UnknownFormat
Blaming database migration for format errors
5. You want to add authentication to your Rails API-only app using token-based headers. Which setup step is essential to support this in an API-only app?
hard
A. Add middleware for session and cookies support manually