Rails APIモード

Railsを使った開発をしたいと思っています。
一方でフロントエンドに React や Vue を使いたいという気持ちもあります。
ということで、Rails でバックエンドの API サーバーを構築し、
フロントエンドは React や Vue を使っていきたいと思います。

そこで見つけたのが、RailsAPI モードです。

API とは

APIとは、「 Application Programming Interface 」のアクロニムです。
外部とやり取りをする窓口にあたるもので、
機能の一部を外部に提供するのに使われます。

例えば、Twitter API ではツイートを取得することができます。
ドキュメントホーム | Docs | Twitter Developer
ぐるなびAPIでは飲食店情報を取得することができます。
ぐるなび Web Service - トップページ

RailsAPI モード

Rails には API モードというのがあります。

Rails は基本的には MVC アーキテクチャなので、
M (モデル)、V (ビュー)、 C (コントローラ) を持ちます。

ただし、API サーバーならフロントエンドである V (ビュー) は不要です。
そのため、API モードには V (ビュー) がありません。

また、ビュー関連のGemもインストールされません。

通常モードで rails new した場合の Gemfile と
API モードで rails new した場合の Gemfile の
diff は以下の通りです。

12,17d11
< # Use SCSS for stylesheets
< gem 'sass-rails', '>= 6'
< # Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
< gem 'webpacker', '~> 5.0'
< # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
< gem 'turbolinks', '~> 5'
19c13
< gem 'jbuilder', '~> 2.7'
---
> # gem 'jbuilder', '~> 2.7'
30a25,27
> # Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible
> # gem 'rack-cors'
> 
37,41d33
<   # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
<   gem 'web-console', '>= 4.1.0'
<   # Display performance information such as SQL time and flame graphs for each request in your browser.
<   # Can be configured to work on production as well see: https://github.com/MiniProfiler/rack-mini-profiler/blob/master/README.md
<   gem 'rack-mini-profiler', '~> 2.0'
45,52d36
< end
< 
< group :test do
<   # Adds support for Capybara system testing and selenium driver
<   gem 'capybara', '>= 3.26'
<   gem 'selenium-webdriver'
<   # Easy installation and use of web drivers to run system tests with browsers
<   gem 'webdrivers'

通常モードではインストールされる Gem のいくつかが、API モードではインストールされないことがわかります。
対して、コメントアウトされていますが、CORS 用の Gem である rack-cors が API モードでは追加されています。

API モードの設定方法

実際に RailsAPI モードを利用する方法は次のとおりです。

rails new で、新規にプロジェクトを作る場合
rails new--apiをつけるだけです。

$ rails new app --api

既存プロジェクトをAPI専用に変更する場合 config/application.rbのApplicationクラス定義の冒頭に以下を追加します。

config.api_only = true

参考 railsguides.jp

終わり