RailsでWebAPIを作成します。
以前作ったユーザ管理アプリを前回記事では、既存RailsアプリをWebAPI化する修正を試みましたができませんでした。今回は–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を編集し、データベースへの接続を設定する。
$ 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
$ rails db:migrate == 20181220110335 CreateUsers: migrating ====================================== -- create_table(:users) -> 0.0426s == 20181220110335 CreateUsers: migrated (0.0429s) =============================
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 |
これを以下の流れで動かしてみます。
動作の結果は、curlとPostmanの両方で見てみます。
$ 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”}'
$ curl -X GET http://localhost:3000/users
$ curl -X PATCH http://localhost:3000/users/2 -H "Content-Type:application/json" -d '{"name":"test3","age”:76,"mail":"test3@test.com"}'
$ curl -X GET http://localhost:3000/users/2
$ curl -X DELETE http://localhost:3000/users/2
$ curl -X GET http://localhost:3000/users
Railsの–apiオプションをつけてプロジェクトを作成し、scaffoldでusersを作成しました。
これだけでWebAPIとしての基本的なCRUDが実装されており、動作を確認することができました。
余談ですが、テーブルのidはauto_incrementされています。Postgresでidをリセットするには、
select setval ('users_id_seq', 1, false);
とすることでできました。
現在のid値を確認するには、
select * from users_id_seq;
ということがわかりました。