- 2007-07-17 (火) 22:48
- PHP
楽天ウェブサービスをPHPで利用するPEARライブラリ「PEAR::Services_Rakuten-0.2.0」をリリースしました。今回は未対応だったAPIの対応のほか、リファクタリングを行い、今後拡張しやすい形にソースコードを変更しました。
主な変更点は以下です。
- 2007/07/17現在の全APIに対応(楽天ダイナミックアドAPI含む)
- ソースコードリファクタリング
- リファクタリングに伴い利用方法を変更(後述)
インストール・アンインストール
インストール方法は以下です。
$ pear install --alldeps /blog/download/Services_Rakuten-0.2.0.tgz
インストール時に「Failed to download pear/XML_Serializer within preferred state “stable”」といったエラーが発生した場合は以下のコマンドでXML_Serializerをインストール後、Services_Rakutenをインストールして下さい。
$ pear install --alldeps XML_Serializer-beta
アンインストール方法は以下です。
$ pear uninstall __uri/Services_Rakuten
Services_Rakutenを使う[0.2.0用]
0.2.0では以下のコードのようにServices_Rakuten::factory()にて、利用するAPIコード・デベロッパーID・アフィリエイトIDを指定します。このメソッドは各APIを実行するインスタンス(apiインスタンス)を返します。
apiインスタンスのexecuteメソッド実行する楽天ウェブサービスへリクエストが送信されます。executeメソッドは連想配列を引数として受け取るので各種パラメータを設定します。なおexecuteメソッドでは文字コードの変換は行いませんので、keywordなど日本語を渡す場合はUTF-8で指定して下さい。
取得した結果は、apiインスタンスのgetResultDataメソッドにて取得できます。
<楽天市場系API>
<?php require_once('Services/Rakuten.php'); define('DEV_ID', 'xxxx'); define('AFF_ID', 'xxxx'); // 楽天商品検索 $api = Services_Rakuten::factory('ItemSearch', DEV_ID, AFF_ID); $api->execute(array('keyword' => '大福')); var_dump($api->getLastUrl()); var_dump($api->getResultData()); // 楽天商品ジャンル検索 $api = Services_Rakuten::factory('GenreSearch', DEV_ID, AFF_ID); $api->execute(); var_dump($api->getLastUrl()); var_dump($api->getResultData()); // 楽天商品コード検索 $api = Services_Rakuten::factory('ItemCodeSearch', DEV_ID, AFF_ID); $api->execute(array('itemCode' => 'book:11907840')); var_dump($api->getLastUrl()); var_dump($api->getResultData()); // 楽天カタログ検索 $api = Services_Rakuten::factory('CatalogSearch', DEV_ID, AFF_ID); $api->execute(array('keyword' => 'ワンセグ')); var_dump($api->getLastUrl()); var_dump($api->getResultData()); ?>
<楽天ブックス系API>
<?php require_once('Services/Rakuten.php'); define('DEV_ID', 'xxxx'); define('AFF_ID', 'xxxx'); // 楽天書籍検索 $api = Services_Rakuten::factory('BookSearch', DEV_ID, AFF_ID); $api->execute(array('keyword' => 'ブログ')); var_dump($api->getLastUrl()); var_dump($api->getResultData()); // 楽天CD検索 $api = Services_Rakuten::factory('CDSearch', DEV_ID, AFF_ID); $api->execute(array('keyword' => '氷室')); var_dump($api->getLastUrl()); var_dump($api->getResultData()); // 楽天DVD検索 $api = Services_Rakuten::factory('DVDSearch', DEV_ID, AFF_ID); $api->execute(array('keyword' => '氷室')); var_dump($api->getLastUrl()); var_dump($api->getResultData()); ?>
<楽天トラベル系API>
<?php require_once('Services/Rakuten.php'); define('DEV_ID', 'xxxx'); define('AFF_ID', 'xxxx'); // 楽天トラベル施設検索 $api = Services_Rakuten::factory('SimpleHotelSearch', DEV_ID, AFF_ID); $api->execute(array('largeClassCode' => 'japan', 'middleClassCode' => 'kanagawa', 'smallClassCode' => 'hakone')); var_dump($api->getLastUrl()); var_dump($api->getResultData()); // 楽天トラベル施設情報 $api = Services_Rakuten::factory('HotelDetailSearch', DEV_ID, AFF_ID); $api->execute(array('hotelNo' => '65638')); var_dump($api->getLastUrl()); var_dump($api->getResultData()); // 楽天トラベル空室検索 $api = Services_Rakuten::factory('VacantHotelSearch', DEV_ID, AFF_ID); $api->execute(array('largeClassCode' => 'japan', 'middleClassCode' => 'kanagawa', 'smallClassCode' => 'hakone' , 'checkinDate' => '2007-07-18', 'checkoutDate' => '2007-07-20')); var_dump($api->getLastUrl()); var_dump($api->getResultData()); // 楽天トラベル地区コード $api = Services_Rakuten::factory('GetAreaClass', DEV_ID, AFF_ID); $api->execute(); var_dump($api->getLastUrl()); var_dump($api->getResultData()); // 楽天トラベルキーワード検索 $api = Services_Rakuten::factory('KeywordHotelSearch', DEV_ID, AFF_ID); $api->execute(array('keyword' => '伊豆')); var_dump($api->getLastUrl()); var_dump($api->getResultData()); ?>
<その他API>
<?php require_once('Services/Rakuten.php'); define('DEV_ID', 'xxxx'); define('AFF_ID', 'xxxx'); // 楽天ダイナミックアド $api = Services_Rakuten::factory('DynamicAd', DEV_ID, AFF_ID); $api->execute(array('url' => '/blog/')); var_dump($api->getResultStatus()); var_dump($api->getResultStatusMessage()); var_dump($api->getLastUrl()); var_dump($api->getResultData()); ?>
Services_Rakutenを使う[0.1.0用]
従来からあったdoItemSearch/doGenreSearch/doItemCodeSearch/doBookSearchメソッドはdeprecated(非推奨)となっています。0.2.0では動作しますが、今後のリリースでは廃止される可能性があります。
今後開発される際はServices_Rakuten::factoryによる利用方法で実装して下さい。
リファクタリングの効果
ちょうどリリース作業を行っている最中に楽天ダイナミックアドAPIが発表されました。「げげっ」と思いつつも、どうせなら今回のリリースに含めたいと思い作業を開始したところ、API拡張用にリファクタリングを行っていたため短時間で機能追加を行うことができました。
早速リファクタリングの効果が発揮され、我ながら嬉しかったです;-)。
- Newer: 携帯サイトに楽天ダイナミックアドを設置する
- Older: PHPベンチマーク CakePHPでモデルを使用しない
コメント (Close):2
- akahoshi 07-08-02 (木) 16:37
-
こんにちはー
早速使わせていただきましたー
ありがとうございます!そして、間違って
「楽天API PEAR::Services_Rakuten-0.1.0リリース」
にトラックバックおくっちゃいました。
どうもすみませんー - nekolife 07-09-16 (日) 14:53
-
Services_Rakuten-0.2.0を使わせてもらっています.
楽天APIを扱う上で非常に重宝しております.質問なのですが,楽天商品検索でキーワードを設定せずジャンルIDのみで検索を実行することは可能なのでしょうか?
Services_Rakuten-0.2.0ですと
「keyword or genreId have not been set.」
というエラーになってしまいます.
本家の楽天APIはジャンルIDのみで検索することができるので,Services_Rakuten-0.2.0はできないのかなと気になって報告いたしました.
トラックバック:2
- このエントリーのトラックバックURL
- /blog/2007/07/services_rakuten_020.html/trackback
- Listed below are links to weblogs that reference
- 楽天API PEAR::Services_Rakuten-0.2.0リリース from Shin x blog
- trackback from Do You PHP はてな 07-07-18 (水) 11:59
-
[PHP][PEAR]PEAR::Services_Raku…
Shinさん、仕事早いなぁ:-D 楽天ウェブサービスをPHPで利用するPEARライブラリ「PEAR::Services_Rakuten-0.2.0」をリリースしました (more…)
- pingback from using API; - コンテンツマッチ広告を実現する楽天ダイナミックアドAPI 07-07-19 (木) 12:47
-
[…] 2007年7月19日追記: 楽天API PEAR::Services_Rakuten-0.2.0リリース | Shin x blog […]