Rails5で取り込まれる予定のrails-apiを使ってWeb APIをつくる

Posted on Sat 31 October 2015 in Ruby on Rails

はじめに

web apiを作るのに特化したrails-apiを使ってweb apiを作ってみます。
rails-apiは、Rails5で取り込まれる予定みたいです。
rails-apiは、web apiを作るだけなら不要なrails要素を省いてアプリを作成することができます。
Web APIオンリーでフロントエンドは、別のフレームワーク等を使って開発する場合などに使用すると良いのではないでしょうか。
今回は、問い合わせるとjsonを返すだけの単純なGETメソッドのAPIを作成してみます。

rails-apiのインストール

$ gem install rails-api  

rails-apiのディレクトリを作成

今回は、sample_apiという名前で作成してみました。

$ rails-api new sample_api  

ModelとControllerの作成

rails-apiでは、Viewを使わないのでModelとControllerだけ作成します。
ここでは、Model名とController名はそれぞれBookとbooksとしておきます。
自分で作成する場合は、好きな名前にしてください。

Modelの作成

$ ./bin/rails g model Book name:string  
$ ./bin/rake db:migrate  

Controllerの作成

Controllerは、バージョニングできるようにバージョン名でディレクトリを振り分けて配置しています。

$ ./bin/rails g controller api/v1/books  
# app/controllers/api/v1/books_controller.rb  
class Api::V1::BooksController \< ApplicationController  
  def index  
    @indicators = Indicator.all  
    render json: @indicators  
  end  
end  

ルーティングの設定

# config/routes.rb  
Rails.application.routes.draw do  
  namespace :api, {format: \'json\'} do  
    namespace :v1 do  
      resources :books  
    end  
  end  
end  

テスト用データの登録

rake db:seedを使ってテスト用のデータを登録します。

# db/seed.rb  
Book.create(name: \"test name\")  
$ ./bin/rake db:seed  

テストサーバーの起動

$ ./bin/rails server  

サーバーを起動した後、
http://localhost:3000/api/v1/books
にアクセスすればテスト用のデータとして登録していた内容がjsonとして返されます。