RailsをAPI専用で利用する準備


これは何?

大規模なアプリケーションを開発したりする場合、

RailsをAPIサーバーとして利用し、APIクライアントは別に用意するケースが多い。

(弊社ではReactNative)

その時に、RailsをどのようにしてAPIサーバー専用とさせるのかの基礎知識を記載して行く。

僕も学びながらなので是非ご指摘あれば教えてください。


API化に必要な知識

基本的には、APIクライアントからのHTTPリクエストが来たら、

そのリクエストに応じたレスポンスを返してあげるというそれだけ。

そのレスポンス部分だけをRailsでやりますよということ。

リクエストの形はHTTPリクエストなのでURLで来て、

Railsサーバーで色々ロジックを動かして、

レスポンスの形はJSON形式で返してあげるのが基本らしいです。

これで1セット。

なので、Railsで普段ウェブアプリケーションを開発している人からしても、取り立てて新しいことといえばJSONで出力するという部分だけ。

今回はそこを重点的に見ていきたいと思います。


JSON出力

RailsでのJSON出力というと、rabljbuilderactive_model_serializersの三つがメインらしいです。

どれだけ高速にJSONを出力できるかのパフォーマンスで見ると、

active_model_serializersが非常に良いとのことなので、今回はそれを使って行きます。


active_model_serializersを使って見る

まずは、使う為の下準備。

gem 'active_model_serializers'

bundle install

ちなみに、jbuilderは標準でGemfileに追加されてしまっている為、わかりやすくするためにコメントアウトしてもいいかもしれない。


サンプルを作って動かす

今回はUserテーブルを作成して、そこにいくつかのデータをいれたものをブラウザでJSON出力できるかどうかまでを見ていきます。

※ 出力したいデータは適当に自分で突っ込んでください。

bundle exec rails generate model User name:string email:string

bundle exec rails generate serializer User


routes.rb

get 'users/index'



user.rb

#特に何もなし



user_serializer.rb

attributes :id, :name, :email



users_controllers.rb

def index

@users = User.all
render json: @users
end

ここまでできたら、あとはブラウザで、

localhost:3000/users/index.json

と打ち込めばUserテーブルに保存されているデータが出力されると思います。

ちなみに、ChromeでJSONを見易くするアドオンがあるので是非使って見てください。

こちらの記事が大変参考になりましたので、応用したい方はこちらも見てください。