タグ「楽天WEBサービス」が付けられているもの

楽天API

楽天WEBサービスにて、新しいAPIが追加されました。


  • RWS開発日記 — 楽天トラベルランキングAPI追加と楽天トラベル空室検索API新機能追加のお知らせ - 楽天ウェブサービスの開発・運用チームのブログ -


今回は2件の新規追加だそうです。

  • 楽天トラベルランキングAPI 新規追加


楽天トラベルの施設ランキングの情報を取得可能なAPIがこの度新規で追加となりました。
温泉宿や高級ホテルなどのジャンル別にお客様からの評価の高い施設情報の取得が可能です。
是非ご活用ください。

とのこと。

APIのページはこちら

さらに、

楽天API

楽天WEBサービスで、新機能1件追加と旧楽天ブックスの廃止が告知されていました。


  • RWS開発日記 — 楽天オークション商品検索API 機能追加のお知らせ - 楽天ウェブサービスの開発・運用チームのブログ


楽天オークション商品検索API ジャンルごとの商品数取得フラグ追加。これにより、検索条件にヒットした出品商品が各ジャンルにどれくらい所属しているのかが簡単に分かるようになりました。

とのこと。

また、

楽天API

楽天WEBサービスに、楽天トラベル系APIと新機能が追加されたそうです。


  • RWS開発日記 — 楽天トラベル系API 新機能追加&新API追加のお知らせ - 楽天ウェブサービスの開発・運用チームのブログ


まずは、

  • 楽天トラベルキーワード検索API ホテルチェーン機能追加


楽天トラベルキーワード検索APIにおいて、新しくホテルチェーンによる絞込みが可能となる入力パラメータが追加されました。


楽天APIでブックス系API等の機能追加

  • 投稿日:
  • by
  • カテゴリ:

楽天API

楽天Webサービス(楽天API)のブックス系APIに、新しい機能が追加されたようです。


  • RWS開発日記 — 楽天ブックス系API等 機能追加のお知らせ - 楽天ウェブサービスの開発・運用チームのブログ -




  • 楽天ブックス系APIに「ジャンルごとの商品数取得フラグ」追加

  • 楽天商品検索API、楽天カタログ検索APIの「ジャンルごとの商品数取得フラグ」で親ジャンルの表示が追加



とのこと。

さらには、

楽天APIに新ブックス系APIリリースとトラベル系に機能追加

楽天APIにて、楽天ブックス系で新しく9APIリリース、トラベル施設情報APIで機能追加がされています。


  • RWS開発日記 — 楽天ブックス系API 9APIリリース&楽天トラベル施設情報API 機能追加 のお知らせ - 楽天ウェブサービスの開発・運用チームのブログ -

  • 【楽天ウェブサービス】RAKUTEN WEBSERVICE


新しい楽天ブックスAPIは以下の通り。

CakePHP楽天APIで携帯サイトを作っているのだが、楽天APIで取得できる画像は、携帯用にそのまま表示すると、画像サイズがでかい。1ページあたりに3枚表示するくらいがやっとだ。

なので、CakePHPで画像ファイルの圧縮率を下げるアクションを追加してみた。

まずは、コントローラーに以下のように作ってみた。

app/controllers/convjpgs_controller.php

class ConvjpgsController extends AppController {
var $name = 'Convjpgs';
function down(){
$this->layout = false;
$this->autoRender = false;
header('Content-type: image/jpeg');
$img = imagecreatefromjpeg('http://'.implode('/',$this->params['pass']).'?_ex=128x128');
imagejpeg($img, NULL, 75);
imagedestroy($img);
}

ちょこちょここちらのカテゴリーで作っていたのですが、ようやく完成しました。

その名も、とことん楽天アフィリエイトシステム!!

CakePHP楽天APIを使って作ったアフィリエイトシステムです。

私の初めてのCakePHPで構築したサイトです。といっても、データベースは使っておらず、楽天APIしか使ってませんが(^^;)

で、とりあえず、以下のようなサイトを作ってみました。


  • とことんリラックマ


↓スクリーンショット

とことん楽天アフィリエイトシステム

このシステムはどういうものかというと・・・・

楽天WEBサービスで、機能強化が発表されていました。


  • RWS開発日記 - 楽天商品検索API、楽天トラベルキーワード検索API 機能追加のお知らせ - 楽天ウェブサービスの開発・運用チームのブログ -


機能強化されたのは、

の2つ。

楽天商品検索APIでは、購入種別というデータが取得できるようになったとのこと。

これまでの検索結果から、通常購入・定期購入・頒布会購入の商品を絞り込むことができる機能です。
※定期購入とは、お客様の欲しい商品が欲しいサイクルで買えるサービスです。
※頒布会購入とは、ショップがセレクトした商品を、ショップが決めた回数でお届けするサービスです。
より細かな購入形式のニーズに対応したサイト作りが可能になることと思います。

今回は、ジャンルコード検索を実装してみたいと思います。

この連載の過去の記事はこちらを参照してください。

まずは、モデルから。

app/models/Genrecode.php

class Genrecode extends AppModel {

var $name = "Genrecode";

//商品検索APIの共通パラメータ
var $api_def = array(
'developerId' => DEV_ID,
'affiliateId' => AFF_ID,
'operation' => 'GenreSearch',
'version' => '2007-04-11',
);

function findAll($conditions = array()) {

$req = 'http://api.rakuten.co.jp/rws/1.11/rest?';

$api_params = array_merge($conditions,$this->api_def);

uses('Xml');

$req .= http_build_query($api_params);

$xml = new XML($req);
$xml_array = Set::reverse($xml);

return $xml_array['Response']['Body']['GenreSearch'];

}
}

前回は、検索フォームで商品を検索できるようにしました。

今回は、ソート順を変えられるようにしてみました。

このカテゴリーの過去の記事の一覧はこちらをご覧ください。

楽天のホームページでは、さまざまな方法でソート順を変更することができます。以下のような感じ。


  • 標準

  • 価格が安い

  • 価格が高い

  • 新着順

  • 感想の件数が多い


楽天WEBサービスでは、これとは別に以下のようなソート順が用意されています。

  • 標準(standard)

  • アフィリエイト料率順(昇順)(+affiliateRate)

  • アフィリエイト料率順(降順)(-affiliateRate)

  • レビュー件数順(昇順)(+reviewCount)

  • レビュー件数順(降順)(-reviewCount)

  • 価格順(昇順)(+itemPrice)

  • 価格順(降順)(-itemPrice)

  • 商品更新日時順(昇順)(+updateTimestamp)

  • 商品更新日時順(降順)(-updateTimestamp)


今回は、検索フォームで商品を絞り込めるようにしてみた。

なお、この連載の過去の記事一覧は「CakePHPで楽天API」を見ていただきたい。

まず、「app/config/routes.php」に以下を追加する。

app/config/routes.php

Router::connect('/searches/*', array('controller' => 'Searches', 'action' => 'index'));

モデルは次のようになる。前回とちょっと変えたのは、APIのパラメータをメソッドに書いていたのをやめて、クラスで定義してみた。

app/models/Item.php

class Item extends AppModel {

var $name = "Item";

var $api_def = array(
'developerId' => DEV_ID,
'affiliateId' => AFF_ID,
'operation' => 'ItemSearch',
'version' => '2008-09-01',
);

function findAll($conditions = array()) {

$req = 'http://api.rakuten.co.jp/rws/1.12/rest?';

$api_params = array_merge($conditions,$this->api_def);

uses('Xml');

$req .= http_build_query($api_params);

$xml = new XML($req);
$xml_array = Set::reverse($xml);

return $xml_array['Response']['Body']['ItemSearch'];
}
}


ちょっとここで一息?ついて、商品コード検索を実装してみることにした。

前回までの構築で、以外と簡単に商品コード検索は実装することができた。

なお、このシリーズはカテゴリーとしてまとめているので、過去の記事はこちらを見てください。


まずは、それぞれのコードをのせてみます。まずはモデル。

app/models/Itemcode.php

class Itemcode extends AppModel {

var $name = "Itemcode";
var $api_def = array(
'developerId' => DEV_ID,
'affiliateId' => AFF_ID,
'operation' => 'ItemCodeSearch',
'version' => '2007-04-11',
);

function findAll($conditions = array()) {

$req = 'http://api.rakuten.co.jp/rws/1.11/rest?';
$api_params = array_merge($conditions,$this->api_def);

uses('Xml');

foreach ($api_params as $key => $value){
$req .= '&'.$key.'='.$value;
}

$xml = new XML($req);
$xml_array = Set::reverse($xml);
return $xml_array['Response']['Body']['ItemCodeSearch'];

}
}

なんだか、CakePHPの初心者の私には、いきなり難しいことから始めてしまったような気がしないでもない、と思う今日この頃(^^;)

このシリーズはカテゴリーとしてまとめているので、過去の記事はこちらを見てください。


ということで。

次はページング処理を付けてみた。

今回開発で使用しているCakePHPのバージョンは1.2RC3で、1.2から標準でページング処理ができるみたいなのですが、どうもそのページ処理をしようと思うと、データベースに接続しようとするのです。今回の場合、WEB APIを使っているので、データベースは使いません。困ったあげく、PEAR:Pagerを使うことにしました。。。。標準のページングも使えるよ、というのをご存じの方がいらっしゃいましたら教えてください(^^;)

ということで、コントローラーを以下のようにしてみました。

class ItemsController extends AppController {

var $name = 'Items';
var $uses = 'Item';

var $conditions = array();    //リクエスト用パラメータ

//デフォルト商品表示
function index($page = 1){

//リクエスト用パラメータ
$conditions = array(
'developerId' => DEV_ID,
'affiliateId' => AFF_ID,
'operation' => 'ItemSearch',
'version' => '2008-09-01',
'keyword' => MAINKWD,
'hits' => PERPAGE,
'page' => $page,
);

//モデルからデータ取得
$data = $this->Item->findAll($conditions);

//商品配列
$this->set('items', $data['Items']['Item']);

//所得アイテム総数
$this->set('count',$data['count']);

//ページング処理
require_once ('Pager.php');

//Pager用パラメータ
$p_options = array(
"totalItems" => $data['count'],
"perPage" => PERPAGE,
'urlVar' => 'page',
'path' => FULL_BASE_URL.'/tokoton/items/',
'fileName' => '%d',
'append' => false,
'currentPage' => $page,
);

$pager =& Pager::factory($p_options);
$navi = $pager -> getLinks();
$this->set('navi',$navi["all"]);

}

}

前回、とりあえずはデータ取得(Model)から表示(View)までを作ってみましたが、APIのパラメータをコントローラから渡すようにしてみました。


  • モデル


< ?php
class Item extends AppModel {

var $name = "Item";

function findAll($conditions = array()) {

//APIのリクエストURI
$req = 'http://api.rakuten.co.jp/rws/1.12/rest?';
uses('Xml');

$req .= http_build_query($conditions);
$xml = new XML($req);
$xml_array = Set::reverse($xml);

return $xml_array['Response']['Body']['ItemSearch']['Items']['Item'];
}
}

?>

PHP初心者、CakePHP初心者の私が、無謀にも楽天WEBサービスをCakePHPで作ってみよう、という試み(^^;)

[tip]このシリーズはこちらのカテゴリーで一連の記事を見ることができます。[/tip]

とりあえずは、CakePHPのインストールや設定等の説明は省きます。

いきなりコーディングできる状態から話を進めていきます。

で、CakePHPで楽天WEBサービス(API)を使ってページを作っていくわけですが、いきなり思いつきで「データ取得はコントローラーではなく、モデルでやりたい」という壁にぶつかってしまいました。

とりあえずできたのですが、まだまだ糞コード(^^;)。詳しい方はどんどんつっこんでくださいね(^^;)

まず、今回はCakePHPで、データベースは使用しないので、モデル全体でデータベースを使用しないことを明記します。以下のファイルを追加します。

app/app_model.php

<?php

class AppModel extends Model {
var $useTable = false;
}

?>