##共有すること
① 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 に設定)
$ rails new keihan_api --api
② keihan_api ディレクトリまで移動
$ cd keihan_api
③ 時刻表データを格納するモデル( Timetabe )を実装
カラム | データ型 | |
---|---|---|
dept_time | String | 発車時刻 |
train_type | String | 列車種別 |
destination | String | 行先 |
memo | String | 備考 |
$ rails g model Timetable dept_time:String train_type:String destination:String memo:String
④ マイグレーションを実行
$ rails db:migrate
⑤ 時刻表データ(yodoyabashi.csv)を、dbディレクトリに格納
⑤ db/seed.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
⑥ マイグレーションを実行
$ rails db:seed
##実行結果
下記コマンドを入力後、http://localhost:3000/timetables にアクセス
$ rails s
時刻表のデータがJSONで帰ってくることが確認できる。
《備考》 APIを解析するコード
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