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

# 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 
```

```app/controllers

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


```

レンダリングします、

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

http://localhost:3000/api

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