Rakuten API in PHP〜楽天SDKを開けて見る(part3)〜

イントロダクション

前回は、楽天APIでのハローワールドを行ってみました。

Rakuten API in PHP

今回は、取得したデータを一覧表示してみようと思います。
前回行ったように、楽天サーバーに「リクエストを送信して、そのレスポンスを受け取る」ということを行いました。

結局「XXXAPI」というのは、ここではウェブAPIのことを指していますが、リクエストを送信して、レスポンスを受け取るということですので
PHPで、楽天APIを使うというのは、以下のようなことを意味します。

PHP版楽天SDKを使って、楽天サーバーにリクエストを送信、レスポンスを受信してその内容を使用する

つまづいたところ

ひとえに「PHP仕様」につまづきました。愚痴っぽくなってしまいますが、PHPの仕様なのか、配列の中に配列が入っているのでJavaとのギャップに少しつまづきました。

変数の中身を「var_dump()」で出力して中身を確認しながらやりました。

これでどの様に表示するかを考えます。ポイントは以下

  1. APIから取得したデータがなんなのか?→画像、説明文、商品名 etc..
  2. それぞれに適した表示方法を考える
  3. HTML + JSでクールに表示

取得した項目一覧

  • アイテム名
  • キャッチコピー
  • アイテムコード
  • アイテム値段
  • キャプション
  • アイテムURL
  • アフィリエイトURL
  • ショップ・アフィリエイトURL
  • イメージフラグ
  • 可溶性
  • 税金フラグ
  • ポストエイジフラグ
  • クレジットカード・フラグ
  • ショップオブザイヤー・フラグ
  • シップオバーシーズ・フラグ(意味がわかりませんでした。。。)
  • ワールドワイド(意味がわかりませんでした。。。)
  • アスラク・フラグ
  • アスラククウロージング・フラグ
  • アスラクエリア
  • アフィリエイト率
  • 開始時間
  • 終了時間
  • レビューカウント
  • ポイント率
  • ポイント率開始時間
  • ポイント率終了時間
  • ギフトフラグ
  • ショップ名
  • ショップコード
  • ???
  • タグID(複数?)
  • 終了時間

実装したもの

これで取得した項目をこのサイトのサイドバーで表示しています。

取得するのに使用したコード

作成したコード ※下のコードを実行

   header("Content-Type: text/html; charset=UTF-8");
    // エラーを出力する
    ini_set('display_errors', 1);
    require_once('../rws-php-sdk-1.1.0/autoload.php');

    $client = new RakutenRws_Client();
    // アプリID (デベロッパーID) をセットします
    $client->setApplicationId('1069312965684050347');

    // アフィリエイトID をセットします(任意)
    $client->setAffiliateId('178fb567.f874f0a0.178fb56b.ec8a5021');

    // IchibaItem/Search API から、keyword=うどん を検索します
    $response = $client->execute('IchibaItemSearch', array(
      'keyword' => '本'
    ));

    // レスポンスが正しいかを isOk() で確認することができます
    if ($response->isOk() == false) {
        // 配列アクセスによりレスポンスにアクセスすることができます。
        echo 'Error ]:'.$response->getMessage();
        return;
    }
    $line_separator = "
";
    $tab = "   ";
    // 取得する項目リスト
    print("<ルート>" . $line_separator);
    print("[ カウント ] ]: " . $response['count'] . $line_separator);
    print("[ ページ ]: " . ['page'] . $line_separator);
    print("[ ファースト ]: " . $response['first'] . $line_separator);
    print("[ ラスト ] ]: " . $response['last'] . $line_separator);
    print("[ ヒット ] ]: " . $response['hit'] . $line_separator);
    print("[ キャリア ]: " . $response['carrier'] . $line_separator);
    print("[ ページカウント ]: " . $response['pageCount'] . $line_separator);
    print("<アイテム>". $line_separator);
    foreach($response as $items) {
        print($tab . "[ アイテム名 ]: " . $items['itemName'] . $line_separator);
        print($tab . "[ キャッチコピー ]: " . $items['catchcopy'] . $line_separator);
        print($tab . "[ アイテムコード ]: " . $items['itemCode'] . $line_separator);
        print($tab . "[ アイテム値段 ]: " . $items['itemPrice'] . $line_separator);
        print($tab . "[ キャプション ]: " .$items['itemCaption'] . $line_separator);
        print($tab . "[ アイテムURL ]: " . $items['itemUrl'] . $line_separator);
        print("<小画像>". $line_separator);
        if (is_array($items['smallImageUrls'])) {
            if (count($items['smallImageUrls']) != 0) {
                $urls = $items['smallImageUrls'];
                print(" <<< var_dump() >>>" . $line_separator);
                var_dump($urls);
                print($line_separator . " <<< End of var_dump() >>>" . $line_separator);
                foreach($urls as $smallImageUrl) {
                    print($tab . $tab . "画像(小)" . $smallImageUrl['imageUrl'] . $line_separator);
                }
            }
        } else {
            print("[小画像]: 小画像なし" . $line_separator);
        }
        print("<中画像>". $line_separator);
        if (is_array($items['mediumImageUrls'])) {
            if (count($items['mediumImageUrls']) != 0) {
                $urls = $items['mediumImageUrls'];
                foreach($urls as $mediumImageUrl) {
                    print($tab . $tab . "画像(中)" . $mediumImageUrl['imageUrl'] . $line_separator);
                }
            }
        } else {
            print("[小画像]: 小画像なし" . $line_separator);
        }
        print("[ アフィリエイトURL ]: " . $items->affiliateUrl . $line_separator);
        print("[ ショップ・アフィリエイトURL ]: " . $items->shopAffiliateUrl . $line_separator);
        print("[ イメージフラグ ]: " . $items->imageFlag . $line_separator);
        print("[ 可溶性 ]: " . $items->availability . $line_separator);
        print("[ 税金フラグ ]: " . $items->taxFlag . $line_separator);
        print("[ ポストエイジフラグ ]: " . $items->postageFlag . $line_separator);
        print("[ クレジットカード・フラグ ]: " .$items->creditCardFlag . $line_separator);
        print("[ ショップオブザイヤー・フラグ ]: " . $items->shopOfTheYearFlag . $line_separator);
        print("[ シップオバーシーズ・フラグ(意味がわかりませんでした。。。) ]: " . $items->shipOverseasFlag . $line_separator);
        print("[ ワールドワイド(意味がわかりませんでした。。。) ]: " . $items->shipOverseasArea . $line_separator);
        print("[ アスラク・フラグ ]: " . $items->asurakuFlag . $line_separator);
        print("[ アスラククウロージング・フラグ ]: " . $items->asurakuClosingTime . $line_separator);
        print("[ アスラクエリア ]: " . $items->asurakuArea . $line_separator);
        print("[ アフィリエイト率 ]: " . $items->affiliateRate . $line_separator);
        print("[ 開始時間 ]: " . $items->startTime . $line_separator);
        print("[ 終了時間 ]: " . $items->endTime . $line_separator);
        print("[ レビューカウント ]: " . $items->reviewCount . $line_separator);
        print("[ ポイント率 ]: " . $items->pointRate . $line_separator);
        print("[ ポイント率開始時間 ]: " . $items->pointRateStartTime . $line_separator);
        print("[ ポイント率終了時間 ]: " . $items->pointRateEndTime . $line_separator);
        print("[ ギフトフラグ ]: " . $items->giftFlag . $line_separator);
        print("[ ショップ名 ]: " . $items->shopName . $line_separator);
        print("[ ショップコード ]: " . $items->shopCode . $line_separator);
        print("[ ??? ]: " . $items->genreId . $line_separator);
        print("[ タグID(複数?) ]: " . $items->tagIds . $line_separator);
        print("[ 終了時間 ]: " . $items->endTime . $line_separator);
        break;
    }

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す