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
レンダリングします、
これをブラウザーで確認します。
冒頭で記述した結果が吐き出されております。