3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails API

Posted at

はじめに

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

スクリーンショット 2020-11-10 20.29.40.png

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)

スクリーンショット 2020-11-12 11.03.30.png

上記のように表示されればOK!!

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?