前回では商品検索のHTMLフォームを表示させました。
今度はこのフォームに実際にキーワードと価格を入力して
「商品検索ボタン」を押してみます。
商品検索結果一覧が表示されます。
今回は入力された内容が
楽天商品検索APIにどういった形で投げられているのかをみていきます
■商品検索APIへのURL生成
サンプルコード全文はこちら
1 <?php
2 //
3 // 楽天商品検索API の利用サンプルコード (PHP)
4 // ---------------------------------------------------------------
5 // 以下を変更してPHP4/5が動作する公開領域におくだけでOK
6 // 詳細な仕様は以下を参照
7 // - 楽天ウェブサービス- http://webservice.rakuten.co.jp/
8 //
9 // UTF-8で保存すること
10 /* ---------------- 以下、変更部分 ------------------------------ */
11
12 // 自分のディベロッパーID
13
14 $DEVELOPER_ID = "自分のディベロッパーID";
15
16 //自分のアフィリエイトID
17
18 $AFFILIATE_ID = "自分のディベロッパーID";
19
20 /* ---------------- 以上、変更部分 ------------------------------ */
|
|
14行目ですが自分で取得したディベロッパIDを入れるようにしてください。
デベロッパーIDの取得(楽天会員登録もこちらから)
18行目ですが自分で取得したアフィリエイトIDを入れるようにしてください。
22 //--------- API毎の固定値
23 // API名
24 $API_NAME = "楽天商品検索API";
25
26 // APIのURL
27 $API_BASE_URL = "http://api.rakuten.co.jp/rws/1.3/rest";
28
29 //オペレーション名
30 $OPERATION = "ItemSearch";
31
32 //バージョン
33 $API_VERSION = "2007-02-14";
34
35 //--------- リクエストパラメタの取得とAPIへのリクエストURL生成
36
|
|
24行目は特に変更の必要はありません。
26行目ですが、楽天商品検索APIへのリクエストURLになります。
楽天商品検索API/オンラインドキュメントのリクエストURLの仕様を確認するようにしてください。
30行目ですが変更の必要はありません。
32行目ですが、現行のバージョンは'2007-02-14'となっています。
37 // リクエストURL生成
38 $api_url = sprintf("%s?developerId=%s&affiliateId=%s&operation=%s", $API_BASE_URL,$DEVELOPER_ID,$AFFILIATE_ID,$OPERATION);
39
|
|
38行目で、楽天商品検索APIへのリクエストURLを生成しています。
PHPのsprint関数は文字列のフォーマット関数です。
商品検索APIの共通パラメタである、1.ディベロッパID、2.アフィリエイトID、3.操作のパラメタを持ったURLを生成しています。
この時点で生成されたURLは以下のようになります。
http://api.rakuten.co.jp/rws/1.3/rest?
developerId=[YOUR_developerID]
affiliateId=[YOUR_affiliateID]
&operation=ItemSearch
40 //APIへのパラメタの連想配列
41 $api_params = array(
42 "keyword" => "",
43 "version" => $API_VERSION,
44 "shopCode" => "",
45 "genreId" => "",
46 "catalogCode" => "",
47 "hits" => "",
48 "page" => "",
49 "sort" => "",
50 "minPrice" => "",
51 "maxPrice" => "",
52 "availability" => "",
53 "field" => "",
54 "carrier" => "",
55 "imageFlag" => ""
56 );
57
|
|
41行目~56行目ですが、楽天商品検索APIに投げることができる(有効な)
サービス固有パラメタの連想配列になります。
連想配列とは"キー"とそれに紐付く"値"がセットになった配列のことをいいます。
APIバージョン(version)を初期値としてしています。
各パラメタの仕様は
楽天商品検索API/オンラインドキュメントを確認するようにしてください。
58 // リクエストパラメタ取得
59 reset($api_params);
60 while(list ($key, $val) = each($api_params) ){
61 if(isset($_REQUEST[$key]) && $_REQUEST[$key] != ""){
62 // リクエストパラメタにあれば、APIへのURLに追加
63 $api_url = sprintf("%s&%s=%s",$api_url, $key, urlencode($_REQUEST[$key]));
64 $api_params[$key] = $_REQUEST[$key];
65 }else if(isset($api_params[$key]) && $api_params[$key] != ""){
66 // パラメタにあれば、APIへのURLに追加
67 $api_url = sprintf("%s&%s=%s",$api_url, $key, urlencode($api_params[$key]));
68 }
69 }
|
|
59行目で配列の初期化を実施しています。
60行目から、楽天商品検索APIの各固有パラメタについて、処理を行います。
61行目で固有パラメタについて、フォームからの値($_REQUEST[パラメタ名])があれば、
63行目で商品検索APIへのリクエストURLに追加しています。
APIに渡すパラメタの値はurlencode関数を使って
エンコードした値を使うようにしてください。
$_REQUESTはリクエストの内容(フォームからGET,POSTの両方のメソッドで渡ってくる)を取得するPHPのスーパーグローバル変数です。
上記で楽天商品検索APIからのURL生成は終了です。
こちらで検索キーワードを「チーズケーキ」上限価格を3000円とした場合の
楽天商品検索APIへのリクエストURLは以下のように生成されます。
http://api.rakuten.co.jp/rws/1.3/rest?
developerId=[ディベロッパID]
&affiliateId=[アフィリエイトID]
&operation=ItemSearch
&keyword=%E3%83%81%E3%83%BC%E3%82%BA%E3%82%B1%E3%83%BC%E3%82%AD
&version=2007-02-14
&maxPrice=3000
次回では上記で生成したURLを実際に楽天商品検索APIになげてみます!