LoginSignup
14
19

More than 1 year has passed since last update.

Ruby on rails でAPI作成 json吐き出し

Last updated at Posted at 2017-12-02

Ruby on Rails でAPI を作成してみた。

jsonを吐き出すだけのAPIを作成します。

結果:

{
staus: 200,
data: [
{
id: 1,
name: "keisuke",
descript: "Hello Api it is Ruby onRails",
created_at: "2017-12-02T13:58:02.000Z",
updated_at: "2017-12-02T13:58:02.000Z"
},
{
id: 2,
name: "yamada #{i}",
descript: "Hello word Api Roop",
created_at: "2017-12-02T14:25:58.000Z",
updated_at: "2017-12-02T14:25:58.000Z"
},
{
id: 3,
name: "yamada #{i}",
descript: "Hello word Api Roop",
created_at: "2017-12-02T14:25:58.000Z",
updated_at: "2017-12-02T14:25:58.000Z"
}
]
}

上記をはきだすAPIを作成します。

データーの取得先はDB でmysqlになります。

rails generate でmodelを作ります。

rails g model Api name:string descript:text 

モデルクラスと、マイグレーションファイルを作成できます。

テーブルを作ります。

rake db:migrate

これでテーブル完成、モデルクラス完成ですが、テーブルにはデーターが入っていないため、
入れてみます、

sqlで入れてみてもいいですが、

rails に含まれてる、seed.rbを使ってみます。

project/db/seed.rb

# This file should contain all the record creation needed to seed the database with its default values.
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
#
# Examples:
#
#   cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
#   Mayor.create(name: 'Emanuel', city: cities.first)

上記のような感じになってます、

サンプルコードが記述されてます。

ここに、サンプルコード的にデーターを入れると、インサートしてくれます。
試してみます。

10.times do |i|
    Api.create({name: 'yamada #{i} ',descript:'Hello word Api Roop'})
end

上記は10回 name カラムに yamada descript カラムに Hello word Api Roop

をインサートして下さいコードが完成。

これを実行し、DBへデーターをインサートします。

rake db:seed

これでデーターのインサートが完了します。

確認してみます、


mysql> select * from apis;
+----+-------------+------------------------------+---------------------+---------------------+
| id | name        | descript                     | created_at          | updated_at          |
+----+-------------+------------------------------+---------------------+---------------------+
|  1 | keisuke     | Hello Api it is Ruby onRails | 2017-12-02 13:58:02 | 2017-12-02 13:58:02 |
|  2 | yamada #{i} | Hello word Api Roop          | 2017-12-02 14:25:58 | 2017-12-02 14:25:58 |
|  3 | yamada #{i} | Hello word Api Roop          | 2017-12-02 14:25:58 | 2017-12-02 14:25:58 |
|  4 | yamada #{i} | Hello word Api Roop          | 2017-12-02 14:25:58 | 2017-12-02 14:25:58 |
|  5 | yamada #{i} | Hello word Api Roop          | 2017-12-02 14:25:58 | 2017-12-02 14:25:58 |
|  6 | yamada #{i} | Hello word Api Roop          | 2017-12-02 14:25:58 | 2017-12-02 14:25:58 |
|  7 | yamada #{i} | Hello word Api Roop          | 2017-12-02 14:25:58 | 2017-12-02 14:25:58 |
|  8 | yamada #{i} | Hello word Api Roop          | 2017-12-02 14:25:58 | 2017-12-02 14:25:58 |
|  9 | yamada #{i} | Hello word Api Roop          | 2017-12-02 14:25:58 | 2017-12-02 14:25:58 |
| 10 | yamada #{i} | Hello word Api Roop          | 2017-12-02 14:25:58 | 2017-12-02 14:25:58 |
| 11 | yamada #{i} | Hello word Api Roop          | 2017-12-02 14:25:58 | 2017-12-02 14:25:58 |
+----+-------------+------------------------------+---------------------+---------------------+
11 rows in set (0.00 sec)


インサートされてますね〜〜

便利ですね〜

では吐き出します。

コントローラークラスを作成

実際に書いてもいいですが、generateのお世話になります。

下記実行

rails g controller Api 

class ApiController < ApplicationController
    def index
        @apis = Api.all
        render json: {staus: 200,data: @apis}
    end
end


レンダリングします、

これをブラウザーで確認します。

冒頭で記述した結果が吐き出されております。

14
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
19