Tarzanで作るWebサービス 第10回 < ページ情報を管理する1 >
ここまでは、一つのリクエストに対して10個の商品情報を取得する例を扱ってきました。
なぜなら、PAPIでは一つのリクエストに対して取得できる商品情報は最大で10個だからです。
PAPIでは、リクエスト情報に応じて取得する商品情報が決定されます。
PAPIは、これらの商品情報を10個ごとに分割し、これらの分割された商品情報の集まりを「ページ」と呼びます。
あるリクエスト情報に該当する商品情報が100個あったと仮定しましょう。
100個の商品情報は10個のページに分割され、各ページは10個の商品情報を保持します。
つまり、PAPIはリクエストに応じて、一つのページを取得する為、一つのリクエストで取得できる商品情報は最大10個となるのです。
リクエスト情報にページ情報を指定しない場合、デフォルトである1ページ目が指定されます。
つまり、該当する商品情報の中から1~10番目の商品情報が取得されるのです。
11~20番目の商品情報を取得したい場合、リクエスト情報に2ページ目の商品情報を取得したい旨を指定します。
では、現在取得している商品情報が何ページ目の商品情報であるのか確認してみましょう。
サンプル10A
↓サンプルのソースコードです。
<?php
require_once('tarzan/tarzan.class.php');
header('Content-type: text/html; charset=utf-8');
$aaws = new AmazonAAWS();
$opt['ResponseGroup'] = 'Small,Images';
$opt['ItemPage'] = '1';
$res = $aaws->item_search("ねこ",$opt, AAWS_LOCALE_JAPAN);
print "合計商品数:".$res->body->Items->TotalResults."<br>\n";
print "合計ページ数:".$res->body->Items->TotalPages."<br>\n";
print "現在のページ:".$res->body->Items->Request->ItemSearchRequest->ItemPage."<br>\n";
print "<table border=1>";
print "<tr><td>ASIN</td><td>Title</td></tr>";
for($i=0;$i<count($res->body->Items->Item);$i++){
print "<tr>";
print "<td><a href=" . $res->body->Items->Item[$i]->DetailPageURL . ">";
print "<img src=" . $res->body->Items->Item[$i]->SmallImage->URL . "></a></td>";
print "<td>" . $res->body->Items->Item[$i]->ItemAttributes->Title . "</td>";
print "</tr>";
}
print "</table>";
//以下はデバッグ用です
print "<br />";
print "<br />";
print "<br />";
print "<br />";
print "<hr>---------------以下はvar_dumpの結果です---------------<br />";
print "<pre>";
var_dump($res);
print "</pre>";
?>
↓今回の主な変更点です。
$opt['ItemPage'] = '1';
取得するページを指定するために、パラメータ「ItemPage」を使用しています。
上記の例では、デフォルトである1ページ目を明示指定しています。
例えば2ページ目の商品情報を取得したい場合、下記のように指定します。
$opt['ItemPage'] = '2';
また、今回は取得できる合計商品数/合計ページ数/現在のページを表示しています。
合計ページ数を取得することにより、パラメータ「ItemPage」に指定できるページ数が分かります。
print "合計商品数:".$res->body->Items->TotalResults."<br>\n";
print "合計ページ数:".$res->body->Items->TotalPages."<br>\n";
print "現在のページ:".$res->body->Items->Request->ItemSearchRequest->ItemPage."<br>\n";
| 固定リンク
| コメント (1)
| トラックバック (0)