RailsでWeb APIを作成する
アプリ作成
1.ディレクトリ作成
rails new web_api_sample --api cd web_api_sample bin/rails s
2.http://localhost:3000へアクセスし、以下のように表示されることを確認
3.scaffoldコマンドを実行し、モデル、マイグレーション、ルーティング、コントローラを追加
bin/rails generate scaffold task title:string body:text bin/rails db:migrate
4.テストデータを追加
#app/db/seeds.rb 3.times do |i| Task.create(title: "タイトル:#{i}", body: "内容:#{i}") end
以下を実行
bin/rails db:seed
curlコマンドでアプリにアクセスする
データ読み込み
curl http://localhost:3000/tasks [ {"id":1,"title":"タイトル:0","body":"内容:0","created_at":"2022-04-05T02:06:38.468Z","updated_at":"2022-04-05T02:06:38.468Z"}, {"id":2,"title":"タイトル:1","body":"内容:1","created_at":"2022-04-05T02:06:38.473Z","updated_at":"2022-04-05T02:06:38.473Z"}, {"id":3,"title":"タイトル:2","body":"内容:2","created_at":"2022-04-05T02:06:38.477Z","updated_at":"2022-04-05T02:06:38.477Z"} ]
データ作成
curl -H "Content-Type: application/json" -X POST -d '{"title": "テストタイトル", "body": "テスト内容"}' http://localhost:3000/tasks id:4が追加されていることを確認 [ {"id":1,"title":"タイトル:0","body":"内容:0","created_at":"2022-04-05T02:06:38.468Z","updated_at":"2022-04-05T02:06:38.468Z"}, {"id":2,"title":"タイトル:1","body":"内容:1","created_at":"2022-04-05T02:06:38.473Z","updated_at":"2022-04-05T02:06:38.473Z"}, {"id":3,"title":"タイトル:2","body":"内容:2","created_at":"2022-04-05T02:06:38.477Z","updated_at":"2022-04-05T02:06:38.477Z"}, {"id":4,"title":"テストタイトル","body":"テスト内容","created_at":"2022-04-05T02:40:56.569Z","updated_at":"2022-04-05T02:40:56.569Z"} ]
データ削除
curl -X DELETE http://localhost:3000/tasks/4 # id:4が削除されていることを確認 [ {"id":1,"title":"タイトル:0","body":"内容:0","created_at":"2022-04-05T02:06:38.468Z","updated_at":"2022-04-05T02:06:38.468Z"}, {"id":2,"title":"タイトル:1","body":"内容:1","created_at":"2022-04-05T02:06:38.473Z","updated_at":"2022-04-05T02:06:38.473Z"}, {"id":3,"title":"タイトル:2","body":"内容:2","created_at":"2022-04-05T02:06:38.477Z","updated_at":"2022-04-05T02:06:38.477Z"} ]
データ更新
curl -H "Content-Type: application/json" -X PATCH -d '{"title": "変更後のタイトル", "body": "変更後の内容"}' # id:1が変更されていることを確認 [ {"id":1,"title":"変更後のタイトル","body":"変更後の内容","created_at":"2022-04-05T02:06:38.468Z","updated_at":"2022-04-05T03:35:37.906Z"}, {"id":2,"title":"タイトル:1","body":"内容:1","created_at":"2022-04-05T02:06:38.473Z","updated_at":"2022-04-05T02:06:38.473Z"}, {"id":3,"title":"タイトル:2","body":"内容:2","created_at":"2022-04-05T02:06:38.477Z","updated_at":"2022-04-05T02:06:38.477Z"} ]