• 技術が集うTECH GUILD

    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;

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


    コメント一覧

    返信2018年12月22日 10:42

    【Railsサンプルアプリ】既存RailsプロジェクトをWebAPIに修正する (未解決) | TECH GUILD23/

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

    返信2018年12月28日 08:37

    【Vue.js入門】ユーザ管理画面をVuetify.jsのData tablesで作る | TECH GUILD23/

    […] 以前の記事で、RailsでWebAPIを作り、ユーザ情報を管理するテーブルを作成しました。 このフロント部分にあたるものを、Vueで作成しており、今回VuetifyのData tableというコンポートネント […]

    コメントを残す

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