- 2007-05-21 (月)
- API × PHP
さて、前回はRESTリクエストについて説明しましたが、今回は form から得た情報を元に、リクエストURLを生成する PHP プログラムを解説していきたいと思います。
今回のプログラミングの要点は、
Operation=ItemSearch で、キーワード検索ができる
ResponseGroup を Small, Medium, Large から選択できる
(処理結果の違いを体感してもらうため)
SearchIndex を、各種商品ジャンルから選択できる
結果はリクエストURLを出力
です。
それでは、サンプルコードを確認していきましょう。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Amazon Web サービス リクエストURL生成サンプル</title>
</head>
<body>
<p>Amazon Web サービス リクエストURL生成サンプル</p>
<form action="" method="GET">
<input type="text" maxlength="30" name="Keywords" value="" size="20">
<select name="ResponseGroup">
<option value="Small" selected="selected">最小限の情報</option>
<option value="Medium">中くらいの情報</option>
<option value="Large">たくさんの情報</option>
</select>
<select name="SearchIndex">
<option value="Blended" selected="selected">全ての商品</option>
<option value="Books">和書</option>
<option value="ForeignBooks">洋書</option>
<option value="Electronics">エレクトロニクス</option>
<option value="Kitchen">ホーム&キッチン</option>
<option value="Music">ミュージック</option>
<option value="Classical">クラシック音楽</option>
<option value="DVD">DVD</option>
<option value="Software">ソフトウェア</option>
<option value="VideoGames">ゲーム</option>
<option value="Toys">おもちゃ</option>
<option value="Hobbies">ホビー</option>
<option value="SportingGoods">スポーツ&アウトドア</option>
<option value="HealthPersonalCare">ヘルス & ビューティー</option>
<option value="Watches">時計</option>
</select>
<input type="submit" name="" value="リクエストURL生成">
</form>
<?php
// ---------------------------------------------------------------
// Amazon Web サービス リクエストURL生成サンプル(2007/05/21)
// http://www.naminorito.com/
//
// PHP4で動作確認しています
// 文字コードはUTF-8で保存してください
//
/* ---------------- 変更部分(ここから) -------------------------- */
// 自分のアクセスキーID
$AWSACCESSKEYID = "[Your Access Key ID]";
// 自分のアソシエイトID
$ASSOCIATETAG = "[Your Associate ID]";
/* ---------------- 変更部分(ここまで) -------------------------- */
// APIのURL
$API_BASE_URL = "http://webservices.amazon.co.jp/onca/xml";
//--------- パラメータの値入力
$SERVICE = "AWSECommerceService";
$OPERATION = "ItemSearch";
$API_VERSION = "2004-10-04";
$RESPONSEGROUP = $_REQUEST['ResponseGroup'];
$KEYWORDS = urlencode($_REQUEST['Keywords']); // 検索ワードはURLエンコードする
$SEARCHINDEX = $_REQUEST['SearchIndex'];
$ITEMPAGE = "1";
$CONTENTTYPE = "text/xml";
//--------- リクエストURLの生成と出力
// リクエストURL生成
$api_url = sprintf("%s?Service=%s&AWSAccessKeyId=%s&AssociateTag=%s&Operation=%s&Version=%s&ResponseGroup=%s&Keywords=%s&SearchIndex=%s&ItemPage=%s&ContentType=%s" ,
$API_BASE_URL,
$SERVICE,
$AWSACCESSKEYID,
$ASSOCIATETAG,
$OPERATION,
$API_VERSION,
$RESPONSEGROUP,
$KEYWORDS,
$SEARCHINDEX,
$ITEMPAGE,
$CONTENTTYPE
);
// リクエストURL生成ボタンを押された時に、リクエストURLを表示
if(isset($_REQUEST['Keywords'])) {
// 検索ワードが入力されていなければリクエストURLの出力処理を行わない
if(empty($KEYWORDS)) {
}
else {
// 検索ワードのURLデコード処理
$decode_keywords = urldecode($KEYWORDS);
// 検索ワードのエスケープ処理
$escaped_keywords = htmlspecialchars($decode_keywords, ENT_QUOTES);
// リクエストURLのエスケープ処理
$escaped_api_url = htmlspecialchars($api_url, ENT_QUOTES);
// リクエストURLの出力
echo <<<EOM
<hr />
<p><strong>$escaped_keywords</strong>の検索結果リクエストURLは以下の通りです</p>
<p><a href="$escaped_api_url" target="_blank">$escaped_api_url</a></p>
EOM;
}
}
?>
<hr />
<p>サンプルコードの解説は <a href="http://www.naminorito.com/blog/2007/05/21172020.php">Amazon Web サービスの使い方(3) - リクエストURL生成</a> を参考にして下さい</p>
<p>Copyright © <a href="http://www.naminorito.com/blog/">ホリデーウェブマスターブログ</a></p>
</body>
</html>
動作サンプルは以下になります。
Amazon Web サービス リクエストURL生成サンプルプログラム
パラメータは、form から「Keywords」「ResponseGroup」「SearchIndex」を取得し、その他のパラメータは、あらかじめ固定しています。
注意点としては、form で受け取った検索ワード、
$_REQUEST['Keywords']
を、urlencode 関数でURLエンコードしてから
$KEYWORDS
に渡している点です。マニュアルにも書かれていますが、URLエンコードを行わないと、日本語や記号などが入力された場合に不具合が生じます。
また、出力するデータは全て htmlspecialchars 関数でエスケープ処理したものを出力しています。
意図的にタグなどを出力する場合以外は、外部から受け取ったデータにはエスケープ処理を行うようにしましょう。
今回のプログラムで、どのようなリクエストをすれば、どのようなレスポンスが帰ってくるか確認しておきましょう。
次回は、取得したXMLの構造について説明していきます。
Tags :Amazon??Php?Search?Api?
カテゴリ「API × PHP」の最新記事
-
2007-07-09 08:00 - Amazon Web サービスの使い方(7) - Amazon Review Search を公開します
-
2007-05-30 06:00 - Amazon Web サービスの使い方(6) - 検索結果を表示させる
-
2007-05-29 08:00 - Amazon Web サービスの使い方(5) - XMLを連想配列に格納する
-
2007-05-25 12:00 - Amazon Web サービスの使い方(4) - 取得したXMLの構造
-
2007-05-21 17:20 - Amazon Web サービスの使い方(3) - リクエストURL生成
「amazon」に関連する商品を...
- Newer: Amazon Web サービスの使い方(4) - 取得したXMLの構造
- Older: クロスサイトスクリプティング