LoginSignup
22
33

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-04-01

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": "サンプル説明"
}

スクリーンショット 2019-04-02 1.26.27.png

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"
}

スクリーンショット 2019-04-02 1.26.54.png

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

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

パラメータ

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

スクリーンショット 2019-04-02 1.27.10.png

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

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

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

パラメータ

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

スクリーンショット 2019-04-02 1.28.25.png

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

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

パラメータ

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

スクリーンショット 2019-04-02 1.29.30.png

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

22
33
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
22
33