【Railsサンプルアプリ】RailsでWebAPIアプリ作成
RailsでWebAPIを作成します。
以前作ったユーザ管理アプリを前回記事では、既存RailsアプリをWebAPI化する修正を試みましたができませんでした。今回は–apiオプションをつけて新たにプロジェクトを作ります。
概要
- Railsプロジェクトをapiモードで作成
- scaffoldでusersモデルを作成
- db:migrateでテーブル作成
- APIの動作を確認する
- create
- index
- update
- show
- 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 |
これを以下の流れで動かしてみます。
- レコードを2件作成 (test1, test2)
- レコードを一覧表示 (test1, test2の2件表示される)
- 2件目のレコードを更新 (test2 -> test3)
- 2件目のレコードを表示 (test3が表示される)
- 2件目のレコードを削除 (test3が消える)
- レコードを一覧表示 (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件のフィードバック