Home > API × PHP > Amazon Web サービスの使い方(3) - リクエストURL生成

Amazon Web サービスの使い方(3) - リクエストURL生成

さて、前回は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">ホーム&amp;キッチン</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">スポーツ&amp;アウトドア</option>
<option value="HealthPersonalCare">ヘルス &amp; ビューティー</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 &copy; <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」の最新記事

カテゴリ「API × PHP」 の全ての記事を読む

「amazon」に関連する商品を...

Home > API × PHP > Amazon Web サービスの使い方(3) - リクエストURL生成

Search
Feeds

Page Top