Rakuten API PHP〜楽天SDKを斬る(part2)〜

イントロダクション

前回は、楽天APIを使うために楽天SDKをレンタルサーバー上にアップロード(インストール)しました。

今回は、SDKを使用して1つページを作成しようと思います。

PHPの動きの確認

PHPは、基本的にサーバー上でプログラムが動きます。つまり、サーバーサイドです。
なので、下のようにHTMLと一緒にプログラムコードが書いてあるけど、
HTML部分はブラウザに表示されるものです。つまり、クライアントサイドになります。

早い話が、「サーバー側でPHPが出力したHTMLがクライアント側で表示される」ということです。

<? php
      // PHPのプログラムがサーバーサイドで動く
?>
<html>
 <!-- HTMLファイルの内容はクライアントサイドで表示(動く) -->
</html>

APIの使い方

APIの使い方はこちらのページ(楽天のヘルプ)です。

楽天APIの実装

ヘルプを見ると、上の様な画面が見つかります。「アプリ登録」が必要ということで、はやい話がAPIを使用するためのキーを取得します

上の様にアプリ名と起動するPHPファイルのURLを入力します。

上の様な感じで登録が完了します。

レッツPHP

まず初めに、パスの切り方とかどの様になっているかわからないので以下のコードをrakutenAPI.phpに実装します。
※「rakutenAPI.php」は、今作成したファイルの名前です。

<? php
      phpinfo();
?>
<!DOCTYPE html>
<html>
<head>
 <link rel="stylesheet" href="./rakuten.css">
</head>
<body>
</body>
</html>

そして対象のページを開きます。

上の様なヘッダーがあるページが表示されて色々と詳細が書いてあります。「SCRIPT_URL」という項目があるのでそれを見ると現在の起動しているファイルパスが記載されているのでそれを元にルートパスを確認します。

今回自分のところには「/project」から始まるURLが記載されていたのでルートディレクトリはprojectフォルダのあるディレクトリとなります。

そして使用する楽天APIのSDK→ライブラリのあるパスを指定して「autoload.php」を取り込む様にプログラムを書きます。

こちらのページを参考に作成しました。

// エラーを出力する
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 (デベロッパーID) をセットします
client->setApplicationId('取得したアプリID');

// アフィリエイトID をセットします(任意)
$client->setAffiliateId('取得したアフィリエイトID');

// IchibaItem/Search API から、keyword=うどん を検索します
$response = $client->execute('IchibaItemSearch', array(
  'keyword' => 'AI'
));
// レスポンスが正しいかを isOk() で確認することができます※自作のメソッドです。
if ($response->isOk() == false) {
    // 配列アクセスによりレスポンスにアクセスすることができます。
    echo 'Error:'.$response->getMessage();
    return;
}
foreach($response as $items) {
    var_dump($items);
    foreach($items as $cols) {
        break;
    }
    break;
}

取得する項目に関してのドキュメントはこちらでテストフォームよりGETして見ると取得する内容がJSON形式で取得できます。PHPで取得する場合は変数->項目名で取得します。

取得したデータの初めの1レコード分です、ここから表示したい情報を取り出して紹介画面に表示します。
具体的には、変数の「$items」にセットされている内容を出力しています。

データの取得方法

var_dump($items);の出力内容のうち、初めのデータを下の「単純に出力したデータ」の項目に記述しています。
$items[0]の内容が出力した内容になります。JSONデータを取得しているので、この中身を取得するというところをイメージすればデータ構造が見えてくると思います。

単純に出力したデータ

["itemName"]=> string(256) "さらにクーポン割引 DAKINE ダカイン メンズ スノーボード グローブ ミトン GORE-TEX AI237-718 手ぶくろ ミトングローブ スノボ スノーグローブ 手袋 ゴアテックス スキーグローブ てぶくろ 男性用"

["catchcopy"]=> string(120) "全3色 DAKINE のスノーボード グローブ ミトン GORE-TEX が20%OFF IMPREZA MITT 2019 WINTER【あす楽】"

["itemCode"]=> string(18) "oc-sports:10024681"

["itemPrice"]=> int(7776)

["itemCaption"]=> string(1244) "メーカー希望小売価格はメーカー商品タグに基づいて掲載しています商品詳細素材・仕様DAKINE/ダカイン メンズ グローブ ミトン IMPREZA MITT 2019 WINTER AI237-7182019-DAKINE WINTER COLLECTION透湿性・防水性に優れたGORE-TEXを採用した、高品質なメンズスノーボードグローブ。裏起毛でゲレンデでも寒さからしっかり守ってくれます!手首はベルクロ使用で自分好みの大きさに調整可能!◆素材:ポリエステル65%、ポリウレタン22%、ナイロン13%サイズS:全長22cm×周囲20cm×幅11cm×親指7cmM:全長23.5cm×周囲22cm×幅13cm×親指8cmL:全長24.5cm×周囲25cm×幅14cm×親指9cm※商品によって多少の誤差がございますので、予めご了承ください。注意事項※初期不良以外の返品・交換は固くお断りしております。サイズ・カラー選び等は慎重に行ってください。※掲載商品の色は、できる限り現品と同じになるよう努めておりますが、ご使用のパソコン環境により多少色合いが異なる場合がございます。著しい色の相違は御座いませんのでご安心ください。"

["itemUrl"]=> string(191) "http://hb.afl.rakuten.co.jp/hgc/g00s1ld6.jciuf633.g00s1ld6.jciujad2/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Foc-sports%2F206040057%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Foc-sports%2Fi%2F10024681%2F" ["shopUrl"]=> string(163) "http://hb.afl.rakuten.co.jp/hgc/g00s1ld6.jciuf633.g00s1ld6.jciujad2/?pc=http%3A%2F%2Fwww.rakuten.co.jp%2Foc-sports%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Foc-sports%2F"

["smallImageUrls"]=> array(3) { [0]=> array(1) { ["imageUrl"]=> string(92) "http://thumbnail.image.rakuten.co.jp/@0_mall/oc-sports/cabinet/20618/206040057.jpg?_ex=64x64" } [1]=> array(1) {

["imageUrl"]=> string(94) "http://thumbnail.image.rakuten.co.jp/@0_mall/oc-sports/cabinet/20618/206040057_1.jpg?_ex=64x64" } [2]=> array(1) {

["imageUrl"]=> string(94) "http://thumbnail.image.rakuten.co.jp/@0_mall/oc-sports/cabinet/20618/206040057_2.jpg?_ex=64x64" } } ["mediumImageUrls"]=> array(3) { [0]=> array(1) { ["imageUrl"]=> string(94) "http://thumbnail.image.rakuten.co.jp/@0_mall/oc-sports/cabinet/20618/206040057.jpg?_ex=128x128" } [1]=> array(1) {

["imageUrl"]=> string(96) "http://thumbnail.image.rakuten.co.jp/@0_mall/oc-sports/cabinet/20618/206040057_1.jpg?_ex=128x128" } [2]=> array(1) {

["imageUrl"]=> string(96) "http://thumbnail.image.rakuten.co.jp/@0_mall/oc-sports/cabinet/20618/206040057_2.jpg?_ex=128x128" } } ["affiliateUrl"]=> string(191) "http://hb.afl.rakuten.co.jp/hgc/g00s1ld6.jciuf633.g00s1ld6.jciujad2/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Foc-sports%2F206040057%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Foc-sports%2Fi%2F10024681%2F"

["shopAffiliateUrl"]=> string(163) "http://hb.afl.rakuten.co.jp/hgc/g00s1ld6.jciuf633.g00s1ld6.jciujad2/?pc=http%3A%2F%2Fwww.rakuten.co.jp%2Foc-sports%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Foc-sports%2F"

["imageFlag"]=> int(1) ["availability"]=> int(1) ["taxFlag"]=> int(0)

["postageFlag"]=> int(0) ["creditCardFlag"]=> int(1) ["shopOfTheYearFlag"]=> int(0)

["shipOverseasFlag"]=> int(0)

["shipOverseasArea"]=> string(0) ""

["asurakuFlag"]=> int(1)

["asurakuClosingTime"]=> string(5) "13:00"

["asurakuArea"]=> string(305) "群馬県/埼玉県/千葉県/東京都/神奈川県/新潟県/富山県/石川県/福井県/山梨県/長野県/岐阜県/静岡県/愛知県/三重県/滋賀県/京都府/大阪府/兵庫県/奈良県/和歌山県/鳥取県/島根県/岡山県/広島県/山口県/徳島県/香川県/愛媛県/高知県"

["affiliateRate"]=> int(1)

["startTime"]=> string(0) ""

["endTime"]=> string(0) ""

["reviewCount"]=> int(0)

["reviewAverage"]=> int(0)

["pointRate"]=> int(1)

["pointRateStartTime"]=> string(0) ""

["pointRateEndTime"]=> string(0) ""

["giftFlag"]=> int(0)

["shopName"]=> string(15) "OC SPORTS ANNEX"

["shopCode"]=> string(9) "oc-sports"

["genreId"]=> string(6) "501854"

["tagIds"]=> array(0) { }


投稿者:

takunoji

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

コメントを残す