WEB API PROGRAMMING!

web creators 2009年9月号
WEB API PROGRAMMING!:サンプルデータ

<注意書き>
※Web APIの仕様が変更されたなどの理由により、記事と動作が異なる場合があります。あらかじめご了承ください。

●●●●●サンプルデータ1のタイトル

ぐるなび API

●●●●●サンプルデータ1

<?php
define('API_KEY', '取得したアクセスキーを指定してください');

/**
* ぐるなびWebサービスに接続する
*
* @param string メソッド名
* @param array その他のリクエストオプション
*/
function request_gnavi($uri, $options = array())
{
$url = 'http://api.gnavi.co.jp/ver1/' . $uri . '/';
$options['keyid'] = API_KEY;
if ($options) {
foreach ($options as $key => $val) {
if ($val) {
$str_params []= sprintf('%s=%s', $key, urlencode($val));
}
}
$url = sprintf('%s?%s', $url, implode('&', $str_params));
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,
CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
$response = curl_exec($ch);
curl_close($ch);
$result = simplexml_load_string($response);
if (! $result) {
return false;
}

return $result;
}

/**
* エリアマスタ取得APIにリクエストする
*
*/
function request_gnavi_area()
{
return request_gnavi('AreaSearchAPI');
}

/**
* 都道府県マスタ取得APIにリクエストする
*
*/
function request_gnavi_pref()
{
return request_gnavi('PrefSearchAPI');
}

/**
* 大業態マスタ取得APIにリクエストする
*
*/
function request_gnavi_category_large()
{
return request_gnavi('CategoryLargeSearchAPI');
}

/**
* 小業態マスタ取得APIにリクエストする
*
*/
function request_gnavi_category_small()
{
return request_gnavi('CategorySmallSearchAPI');
}

/**
* レストラン検索APIにリクエストする
*
* @param array リクエストオプション
*/
function request_gnavi_rest_search($options)
{
return request_gnavi('RestSearchAPI', $options);
}

// エリアマスタを取得する
$gnavi_area = request_gnavi_area();
// 都道府県マスタを取得する
$gnavi_pref = request_gnavi_pref();
// 大業態マスタを取得する
$gnavi_category_large = request_gnavi_category_large();
// 小業態マスタを取得する
$gnavi_category_small = request_gnavi_category_small();

// レストランを検索する
$result = array();
if (isset($_GET['search'])) {
unset($_GET['search']);
$options = array();
foreach ($_GET as $key => $val) {
$options[$key] = $val;
}

$result = request_gnavi_rest_search($options);
if ($result && isset($result->error)) {
switch ($result->error->code) {
case 600:
$error = "指定された店舗の情報が存在しません。";
break;
case 601:
$error = "不正なアクセスです。";
break;
case 602:
$error = "不正なぐるなび店舗IDパラメータが指定されました。";
break;
case 603:
$error = "不正な取得種別が指定されました。";
break;
case 604:
$error = "処理中にエラーが発生しました。";
break;
}

// エラーが発生したときはリセットする
$result = array();
}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>ぐるなびWebサービスを使ってさざまなレストランを検索してみよう</title>
<style text="text/css">
table { border: 1px solid gray; border-collapse: collapse; margin: 15px; width: 200px; height: 400px; float: left; }
table th, table td { border: 1px solid gray; text-align: center; }
div.center { text-align: center; }
.result { width: 250px; }
</style>
</head>

<body style="text-align: center;">
<h2>ぐるなWebサービスを使ってさまざまなレストランを検索してみよう</h2>
<?php if (isset($error)): ?>
<p>エラーが発生しました。- <?php echo $error ?></p>
<?php endif; ?>

<p>検索したい条件を入力して「検索」ボタンをクリックしてください。</p>
<form action="gnavi.php" class="search">
<label for="name">店舗名:</label><input type="text" name="name">
<label for="name_kana">店舗名(読み):</label><input type="text" name="name_kana">
<br>
<label for="area">エリア:</label>
<select name="area">
<option value="">選択なし</option>
<?php foreach ($gnavi_area->area as $area): ?>
<option value="<?php echo $area->area_code ?>"><?php echo $area->area_name ?></option>
<?php endforeach; ?>
</select>
<label for="pref">都道府県:</label>
<select name="pref">
<option value="">選択なし</option>
<?php foreach ($gnavi_pref->pref as $pref): ?>
<option value="<?php echo $pref->pref_code ?>"><?php echo $pref->pref_name ?></option>
<?php endforeach; ?>
</select>
<br>
<label for="category_l">大業態:</label>
<select name="category_l">
<option value="">選択なし</option>
<?php foreach ($gnavi_category_large->category_l as $category_l): ?>
<option value="<?php echo $category_l->category_l_code ?>"><?php echo $category_l->category_l_name ?></option>
<?php endforeach; ?>
</select>
<label for="category_s">小業態:</label>
<select name="category_s">
<option value="">選択なし</option>
<?php foreach ($gnavi_category_small->category_s as $category_s): ?>
<option value="<?php echo $category_s->category_s_code ?>"><?php echo $category_s->category_s_name ?></option>
<?php endforeach; ?>
</select>
<br>
<label for="equipment">設備・サービス:</label><input type="text" name="equipment">
<br>
<label for="freeword">フリーワード:</label><input type="text" name="freeword">
<br>
<input type="submit" name="search" value="検索する">
</form>

<?php if ($result): ?>
<?php foreach ($result->rest as $rest): ?>
<table class="result">
<tr><td><?php echo $rest->name ?>(<?php echo $rest->name_kana ?>)</td></tr>
<tr><td><?php echo $rest->category ?></td></tr>
<tr><td><a href="<?php echo $rest->url ?>">PCサイトURL</a></td></tr>
<tr><td><a href="<?php echo $rest->url_mobile ?>">携帯サイトURL</a></td></tr>
<tr><td>
<img src="<?php echo $rest->image_url->shop_image1 ?>" width="100" height="80"><br>
<img src="<?php echo $rest->image_url->shop_image2 ?>" width="100" height="80"><br>
提供:ぐるなび
</td></tr>
<tr><td><?php echo $rest->address ?></td></tr>
<tr><td><?php echo $rest->tel ?></td></tr>
<tr><td>最寄り駅:<?php echo $rest->access->station ?></td></tr>
<tr><td>平均予算:<?php echo $rest->budget ?></td></tr>
<tr><td>設備:<?php echo $rest->equipment ?></td></tr>
<tr><td>PCクーポン:<?php echo $rest->flags->pc_coupon == 1 ? 'あり' : 'なし' ?></td></tr>
<tr><td>モバイルクーポン:<?php echo $rest->flags->mobile_coupon == 1 ? 'あり' : 'なし' ?></td></tr>
</table>
<?php endforeach; ?>
<?php endif; ?>

<br clear="both">
<hr>
<a href="http://www.gnavi.co.jp/">
<img src="http://apicache.gnavi.co.jp/image/rest/b/api_90_35.gif" width="90" height="35" border="0" alt="グルメ情報検索サイト ぐるなび"></a>
</body>
</html>

●●●●●

←BACK

Copyright (c) 2009 MdN Corporation  All rights reserved.