Site icon Amelt.net

ぐるなびAPIのPHPでの使い方の例

This post is also available in: 日本語 (Japanese)

ぐるなびAPIを使って、位置情報を使った簡単な周辺飲食店検索サイトを作った時のメモです。
周辺の飲食店のスポットを検索できるWebアプリを公開しました|ワタシハドコ?-周辺飲食店検索

ぐるなびAPIの使い方

ぐるなびAPIを使うには、まずユーザー登録してアクセスキーを取得する必要があります。
http://api.gnavi.co.jp/api/

APIをたたいてもエラーが出る場合には、上記のリンク先の「エラー仕様」という所にエラーコード一覧があるので参考にしてみてください。

web_gurunabi_errorcode

2018年10月現在のぐるなびAPIの使い方

基本的には以下のようにパラメーターを設定してリクエストします。JSON形式で返ってきます。

https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=(発行されたアクセスキー)&range=3&sort=2

レスポンスのJSON値をPHPで取り出す

ぐるなびAPIにアクセスするとJSON形式のレスポンスが返ってくるので、PHPのfile_get_contents,json_decode関数を使って値を取得します。

PHPコードでは以下のような例になります。

$RequestURL = 'https://api.gnavi.co.jp/RestSearchAPI/v3/?';
$APIkey = 'keyid=(発行されたアクセスキー)';

//rangeの設定。横着してint型の定数を入れています。
$range = '&range=1';

//業態でソート。横着してint型の定数を入れています。
$sort = '&sort=2';

//https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=(発行されたアクセスキー)&range=1&sort=2
$ReqURL = $RequestURL.$APIkey.$range.$sort;

//file_get_contentsでレスポンスを処理
$json = file_get_contents($Request);
//JSONをデコード
$json_value = json_decode($json);

//値をとりだすには、以下のような感じで。
foreach($json->rest as $item){
	echo $item->name;
}
//もしくは以下のような感じで値をとりだす
echo $xml->rest[0]->name;

Warning: Invalid argument supplied for foreach()というエラーが出る場合

サーバーの設定によっては「Warning: Invalid argument supplied for foreach() in」みたいなエラーが出る場合があります。
これは、配列でないものをforeachしてるという警告です。

対策としては、.htaccessに以下のコードを追加して、エラー表示をOFFにします。

php_flag display_errors Off
php_flag display_startup_errors Off

ひと昔前のぐるなびAPIの使い方

以下の内容は古いバージョンのぐるなびAPIの使い方です。

基本的には以下のようにパラメーターを設定してリクエストします。XML形式で返ってきます。

http://api.gnavi.co.jp/RestSearchAPI/20150630/?keyid=(発行されたアクセスキー)&range=1&sort=1

レスポンスの値をSimpleXMLで取り出す

ぐるなびAPIからXML形式のレスポンスが返ってくるので、PHPのSimpleXML関数を使って値を取得します。

PHPコードでは以下のような例になります。

$RequestURL = 'http://api.gnavi.co.jp/RestSearchAPI/20150630/?';
$APIkey = 'keyid=(発行されたアクセスキー)';

//rangeの設定。横着して定数を入れています。
$range = '&range=1';

//業態でソート。横着して定数を入れています。
$sort = '&sort=2';

//http://api.gnavi.co.jp/RestSearchAPI/20150630/?keyid=(発行されたアクセスキー)&range=1&sort=2
$ReqURL = $RequestURL.$APIkey.$range.$sort;


//simplexmlを使う
$xml = simplexml_load_file($ReqURL);

//値をとりだすには、以下ののような感じで。
foreach($xml->rest as $item){
	echo $item->name;
}