はじめに
RailsのAPIモードを利用してAPIを作成する手順をまとめました。
手順
1. APIモードでRailsアプリの作成
2. モデル・コントローラの作成
3. 名前空間を意識したルーティングの設定
4. コントローラの設定
5. ブラウザで確認
APIモードでRailsアプリ作成
$ rails new api-task --api
通常のrails newコマンドの末尾に--apiをつけることでAPIモードでアプリを作成することができます。
(APIに必要ない部分をデフォルトで作成しなくなります。)
モデル・コントローラーの作成
通常のRailsアプリ同様モデルとコントローラを作成します。
rails g model category name:string
rails g model idea category_id:bigint body:text
$ rails db:create
$ rake db:migrate
#名前空間を意識したルーティングの設定
最初から以下の様にバージョンで名前空間を作成しておくことで今後のAPIのバージョン管理が容易になります。
config/routes.rb
Rails.application.routes.draw do
namespace 'api' do
namespace 'v1' do
resources :posts
end
end
end
##コントローラーの設定
ルートで設定した名前空間に合わせてディレクトリの構成は以下のようになります。
---- controllers
--- api
-- v1
- ideas_controller.rb
- categories_controller.rb
class IdeasController < ApplicationController
def index
@ideas = Idea.all
render json: @ideas
end
def create
@idea = Idea.new(idea_params)
if @idea.save
render json: @idea, status: :created, location: @idea
else
render json: @idea.errors, status: :unprocessable_entity
end
end
private
def idea_params
params.require(:idea).permit(:catagory_id,:body)
end
end
class CategoriesController < ApplicationController
def index
end
def create
@category = Category.new(idea_params)
if @category.save
render json: @category, status: :created, location: @category
else
render json: @category.errors, status: :unprocessable_entity
end
end
private
def category_params
params.require(:category).permit(:name)
end
end
ブラウザで確認
Ideaをいくつか作成してブラウザで確認
Get(http://localhost:3000/api/v1/ideas)
上記のように表示されればOK!!