【Railsサンプルアプリ】RailsでWebAPIアプリ作成

【Railsサンプルアプリ】RailsでWebAPIアプリ作成

RailsでWebAPIを作成します。

以前作ったユーザ管理アプリ前回記事では、既存RailsアプリをWebAPI化する修正を試みましたができませんでした。今回は–apiオプションをつけて新たにプロジェクトを作ります。

概要

  1. Railsプロジェクトをapiモードで作成
  2. scaffoldでusersモデルを作成
  3. db:migrateでテーブル作成
  4. APIの動作を確認する
    1. create
    2. index
    3. update
    4. show
    5. destroy

詳細

Railsプロジェクトをapiモードで作成

$ rails new rails_app_api -BCMT --skip-coffee -d postgresql --api
      create  
      create  README.md
      create  Rakefile
      create  .ruby-version
      create  config.ru
      create  .gitignore
      create  Gemfile
         run  git init from "."

config/database.ymlを編集し、データベースへの接続を設定する。

scaffoldでusersモデルを作成

$ rails generate scaffold User name:string mail:string age:integer
      invoke  active_record
      create    db/migrate/20181220110335_create_users.rb
      create    app/models/user.rb
      invoke  resource_route
       route    resources :users
      invoke  scaffold_controller
      create    app/controllers/users_controller.rb

db:migrateでテーブル作成

$ rails db:migrate 
== 20181220110335 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0426s
== 20181220110335 CreateUsers: migrated (0.0429s) =============================

APIの動作を確認する

app/controllers/users_controller.rbには、以下の5つのアクションが実装されていました。

意味 アクション HTTPメソッド パス
作成 create POST /users
一覧 index GET /users
詳細 show GET /users/1
更新 update PATCH /users/1
削除 destroy DELETE /users/1

 

これを以下の流れで動かしてみます。

  1. レコードを2件作成 (test1, test2)
  2. レコードを一覧表示 (test1, test2の2件表示される)
  3. 2件目のレコードを更新 (test2 -> test3)
  4. 2件目のレコードを表示 (test3が表示される)
  5. 2件目のレコードを削除 (test3が消える)
  6. レコードを一覧表示 (test1の1件が表示される)

動作の結果は、curlとPostmanの両方で見てみます。

create

curl
$ curl -X POST http://localhost:3000/users -H "Content-Type:application/json" -d '{"name":"test1","age":23,"mail":"test1@test.com"}'

$ curl -X POST http://localhost:3000/users -H "Content-Type:application/json" -d '{"name":"test2","age”:37,"mail":"test2@test.com”}'
Postman

 

index

curl
$ curl -X GET http://localhost:3000/users
Postman

update

curl
$ curl -X PATCH http://localhost:3000/users/2 -H "Content-Type:application/json" -d '{"name":"test3","age”:76,"mail":"test3@test.com"}'

 

Postman

show

curl
$ curl -X GET http://localhost:3000/users/2
Postman

destroy

curl
$ curl -X DELETE http://localhost:3000/users/2
Postman

index

curl
$ curl -X GET http://localhost:3000/users
Postman

まとめ

Railsの–apiオプションをつけてプロジェクトを作成し、scaffoldでusersを作成しました。
これだけでWebAPIとしての基本的なCRUDが実装されており、動作を確認することができました。

余談ですが、テーブルのidはauto_incrementされています。Postgresでidをリセットするには、

select setval ('users_id_seq', 1, false);

とすることでできました。

現在のid値を確認するには、

select * from users_id_seq;

ということがわかりました。

【Railsサンプルアプリ】RailsでWebAPIアプリ作成」への2件のフィードバック

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください