Rails APIモード
Railsを使った開発をしたいと思っています。
一方でフロントエンドに React や Vue を使いたいという気持ちもあります。
ということで、Rails でバックエンドの API サーバーを構築し、
フロントエンドは React や Vue を使っていきたいと思います。
API とは
APIとは、「 Application Programming Interface 」のアクロニムです。
外部とやり取りをする窓口にあたるもので、
機能の一部を外部に提供するのに使われます。
例えば、Twitter API ではツイートを取得することができます。
ドキュメントホーム | Docs | Twitter Developer
ぐるなびAPIでは飲食店情報を取得することができます。
ぐるなび Web Service - トップページ
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 モードの設定方法
実際に Rails で API モードを利用する方法は次のとおりです。
rails new
で、新規にプロジェクトを作る場合
rails new
に --api
をつけるだけです。
$ rails new app --api
既存プロジェクトをAPI専用に変更する場合
config/application.rb
のApplicationクラス定義の冒頭に以下を追加します。
config.api_only = true
終わり