Railsでjsonを返却するAPIを作成する。
Railsでjsonを返却するAPIを作成するには、Jbuilderが良さそう。
まずはモデル作成
rails g scaffold Product name:string price:integer category_id:integer
API用のルーティング設定
config/routes.rbをいじり、API用のルーティングを設定する。
APIにはバージョニングをするのが一般的らしい。
Rails.application.routes.draw do # json として返却させるようにformatを指定 namespace :api, {format: 'json'} do # リソースのバージョニング namespace :v1 do resources :products end end # 以下省略
返却するjsonデータの編集
viewsにindex.json.jbuilderが作成されているので、中身を編集。
json.array!(@products) do |product| # product一覧のid, name , priceを取得する # => [{id: 1, name: "TEST", price: 100, category_id: 1}, ...] json.extract! product, :id, :name, :price, :category_id end
jbuilderの詳しい関数に関しては、以下のページを参照。
jbuilderファイルとコントローラーファイルの配置場所を変更
routes.rbを編集したので、app/views/api/v1ディレクトリと、
app/controllers/api/v1ディレクトリ作成し、
views/products以下全てと、controllers/products_controller.rbを
それぞれのディレクトリに移動させる。
products_controller.rbは、namespaceが変わるため、クラスにモジュール名を設定する。
module Api module V1 class ProductsController < ApplicationController
以上でOK。
補足
モデルには、to_jsonメソッドが用意されており、
render メソッドの第2引数に、 :jsonを設定すれば、json値として返却するようになる。