今回はRailsでぐるなびのAPIを使用してみようと思います。
すでにぐるなびAPIのKeyを取得している、という前提で話をすすめます。
下記のコードでは「ラーメン」で検索すると、それに対する店のデータ10件が返ってきます。
require 'json'
require 'net/https'
require "uri"
word="ラーメン"
data={
"keyid": "あなたのAPI-Key",
"freeword": word
}
query=data.to_query
uri = URI("https://api.gnavi.co.jp/RestSearchAPI/20150630/?"+query)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Get.new(uri)
res = http.request(req)
res_data=Hash.from_xml(res.body)
いくつかポイントとなるところを説明します。
まず、以下の箇所ですが、
data={
"keyid": "あなたのAPI-Key",
"freeword": word
}
こちらのハッシュでkeyに指定した文字列、keyidやfreewordは適当につけた名前ではなく、
リクエストパラメータで指定された文字列です。
どのようなパラメータがあるかは、各APIの仕様で確認してください。
次に、この箇所、
query=data.to_query
uri = URI("https://api.gnavi.co.jp/RestSearchAPI/20150630/?"+query)
この2行ではdataのハッシュをURL文字列に変換します。
ハッシュがURLパラメータ用に変換されます。
例 : {c: 3, b: 2, a: 1}.to_query # => "a=1&b=2&c=3"
そして文字列のダブルクォーテーション("")の最後に?を入れて+queryを付け加えると、
変数のqueryが""のURLの文字列の最後に追加されるようになっています。
最後に、この部分のコードですが、
res_data=Hash.from_xml(res.body)
ぐるなびAPIの場合レスポンスはjsonファイルではなくXML形式ですので、xmlでデコードしなければなりません。
res_dataの中にはハッシュ型に変換されたデータが入っています。
ちなみにレスポンスがjsonファイルの場合、
res_data=JSON.parse(res)
というように変更します。
Net::HTTPクラスについては公式にあります。
class Net::HTTP (Ruby 2.6.0)