LoginSignup
18
25

More than 1 year has passed since last update.

[Ruby/Rails]APIモードを使ったAPI実装方法

Last updated at Posted at 2017-10-03

共有すること

① Rails5のAPIモードで、JSONデータを提供するAPIを実装する方法
② CSVで用意した初期データを投入する方法

利用する技術

Rails 5

活用した情報

《京阪電鉄》 淀屋橋駅 【平日・出町柳方面】 時刻表の始発〜午前7時台まで
https://www.keihan.co.jp/traffic/station/stationinfo/010.html

補足(2021/06/19追記)
2017年8月時点のダイヤを参考に作成しています。

下準備

時刻表データをCSV形式で準備
(今回ファイル名は yodoyabashi.csv に設定)

発車時刻 列車種別 行先 備考
05:04 普通 出町柳 3扉車
05:33 普通 三条 3扉車
05:48 急行 出町柳 3扉車
05:52 普通 出町柳 3扉車
06:01 普通 出町柳 3扉車
06:08 急行 出町柳 3扉車・京橋で普通に連絡
... ... ... ...

補足(2021/05/16追記)
時刻表(PDF)の情報を Excel や Numbers 等の表計算ソフトに手入力して、その後 CSV として出力しました。

コード例

① APIモードでアプリを新規作成(今回アプリの名前は、 keihan_api に設定)

command
$ rails new keihan_api --api

keihan_api ディレクトリまで移動

command
$ cd keihan_api

③ 時刻表データを格納するモデル( Timetabe )を実装

カラム データ型
dept_time String 発車時刻
train_type String 列車種別
destination String 行先
memo String 備考
command
$ rails g model Timetable dept_time:String train_type:String destination:String memo:String

④ マイグレーションを実行

command
$ rails db:migrate

⑤ 時刻表データ(yodoyabashi.csv)を、dbディレクトリに格納

⑤ db/seed.rbを編集

db/seeds.rb
require 'csv'

CSV.foreach('db/yodoyabashi.csv') do |row|
    Timetable.create(:dept_time => row[0],:train_type => row[1],:destination => row[2],:memo => row[3])
end

⑥ マイグレーションを実行

command
$ rails db:seed

実行結果

下記コマンドを入力後、http://localhost:3000/timetables にアクセス

command
$ rails s

時刻表のデータがJSONで帰ってくることが確認できる。

スクリーンショット 2017-10-04 1.59.59.png

《備考》 APIを解析するコード

sample.rb
require 'json'
require 'uri'
require 'net/http'

uri = URI.parse("http//:www.sample.com")

json = Net::HTTP.get(uri)
result = JSON.parse(json)

puts result
18
25
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
18
25