Postmanを使ってAPIの確認をしてみる


Postmanを使ってAPIモードで作成したアプリにアクセスしてみた。
(業務でAPIとPostmanを使ったので、自身のメモとして記載)

環境

Mac High Sierra
ruby 2.5.1
Rails 5.2.1

実施したこと

・todoアプリをAPIモードで作成する
・Postmanを使ってクライアントからアクセスし、データの登録、更新を行う
最低限の機能ってことで、CRUD機能だけ搭載

1.rails new

rails newに--apiを付けて、APIモードとして作成する

console
$ rails new todo --api

2.modelの用意、マイグレーション

console
$ rails g model task title:string description:text
$ rails db:migrate

3.modelの設定、バリデーション

app/models/task.rb
class Task < ApplicationRecord
  validates :title, presence: true
  validates :description, presence: true
end

4.ルーティング設定

APIでバージョン管理をさせるため、バージョンで空間を分けるようにしておく

config/routes.rb
Rails.application.routes.draw do
  namespace :api do
    namespace :v1, format: :json do
      resources :tasks
    end
  end
end

5.コントトーラの設定

ルーティングで設定した空間に合わせたディレクトリ構成で設定する

# ディレクトリ構成イメージ
app
 |_controllers
   |_api
     |_vi
       |_tasks_controller.rb
console
$ rails g controller api::v1::tasks
app/cotrollers/api/v1/tasks_controller.rb
class Api::V1::TasksController < ApplicationController
  before_action :set_task, only: [:show, :update, :destroy]

  # GET api/vi/tasks/
  def index
    @tasks = Task.all
    render json: { status: 'success', data: @tasks }
  end

  # GET api/vi/tasks/:id
  def show
    render json: { status: 'success', data: @task }
  end

  # Post api/vi/tasks
  def create
    @task = Task.new(task_params)
    if @task.save
      render json: { status: 'success', data: @task }
    else
      render json: { status: 'error', data: @task.errors }
    end
  end

  # Put api/vi/tasks/:id
  def update
    if @task.update(task_params)
      render json: { status: 'success', data: @task }
    else
      render json: { status: 'error', data: @task.errors }
    end
  end

  # Delete api/vi/tasks/:id
  def destroy
    @task.destroy
    render json: { status: 'success', data: @task }
  end

  private
  def task_params
    params.require(:task).permit(:title, :description)
  end

  def set_task
    @task = Task.find(params[:id])
  end
end

6.Postmanを使ってリクエスト、レスポンスの確認

Postman

6-1.Postmanを起動

Postmanを開く

6-2.ローカルサーバー起動

console
$ rails s

6-3.データのPost(create)

Bodyに登録するデータをJSON形式で設定して、実行する

パラメータ

メソッド:Post
URL:http://localhost:3000/api/v1/tasks
Body:raw JSON(application/json)

Body
{
  "title": "サンプル",
  "description": "サンプル説明"
}

6-4.データのPut(update)

登録した情報を更新する
Body要素に変更する情報を設定する

パラメータ

メソッド:Put
URL:http://localhost:3000/api/v1/tasks/:id
   (:idはdbに登録されているid値 ここでは1を設定)
Body:raw JSON(application/json)

Body
{
  "title": "サンプル2"
}

6-5.データのDelete(destroy)

登録している情報を削除する

パラメータ

メソッド:Delete
URL:http://localhost:3000/api/v1/tasks/:id
   (:idはdbに登録されているid値 ここでは1を設定)

6-7.データのGet(index)

登録した情報をすべて取得する

6-3.データのPostの操作でデータをいくつか登録しておく
(画像では2つデータを登録した)

パラメータ

メソッド:Get
URL:http://localhost:3000/api/v1/tasks

6-5.データのGet(show)

登録した情報からidを指定して、特定の情報のみを取得する

パラメータ

メソッド:Get
URL:http://localhost:3000/api/v1/tasks/:id
   (:idはdbに登録されているid値 ここでは2を設定)

簡単な動きはこれで確認ができた。