廃止になったAPIを利用して作成したプログラムは、動かなくなることがあります。
その場合は、新APIへ対応するため、プログラムの書き換えが必要です。
実際に楽天商品検索APIで、旧APIが廃止になりました。
当講座でも、旧APIで作成したプログラムがあるので、そのままでは動きません。
そこで一部、変更する必要があります。
ちなみに2016年1月現在、
楽天商品検索APIの最新バージョンは、「version:2014-02-22」です。
(1)中継プログラムを修正する。
まず、
Step8・中継プログラムを作成する
楽天ウェブサービスの中継プログラムを作成する方法について。
で掲載したプログラムを修正してください。
変わったのは、ファイル名(RakutenItemSearch.php)と、固定のフィールドです。
楽天商品検索APIの名前と、入力パラメーターに変化があったためです。
アプリIDは、新たに取得するか、
前のdeveloperIdでも今のところは動きます。
旧プログラム
保存先 C:\phpdev\www\rakuten\lib
ファイル名 ItemSearch.php
//固定のフィールド
$url = "http://api.rakuten.co.jp/rws/1.9/rest?";
$url .= "developerId=あなたのdeveloperId";
$url .= "&affiliateId=あなたのaffiliateId";
$url .= "&operation=ItemSearch";
$url .= "&version=2007-10-25";
↓
新プログラム
保存先 C:\phpdev\www\rakuten\lib
ファイル名 RakutenItemSearch.php
//固定のフィールド
$url = "https://app.rakuten.co.jp/services/api/IchibaItem/Search/20140222?";
$url .= "applicationId=前のdeveloperIdか、新たに取得するapplicationIdのこと";
$url .= "&affiliateId=あなたのaffiliateId";
$url .= "&format=xml";
次は、出力パラメーターにも変化があったので、一部修正します。
(2)JavaScriptプログラムを修正する
各Stepに書いた「.js」ファイルのプログラムを、以下のように一部修正してください。
楽天商品検索APIの名前が変わったことにより、
呼び出す中継プログラム名も変えたことによるもの。
旧プログラム
var url = "../lib/ItemSearch.php";
↓
新プログラム
var url = "../lib/RakutenItemSearch.php";
出力パラメーターに「Status」が無くなったことによるもの。
旧プログラム
function getData(data){
var response = data.responseXML.getElementsByTagName('Response');
var status = getValue(response[0], 'Status');
if(!(status == "Success")){
↓
新プログラム
function getData(data){
var response = data.responseXML.getElementsByTagName('root');
var status = response[0].getElementsByTagName('count')[0].firstChild.nodeValue;
if(status == 0){
画像URLが複数取得出来るようになったことによるもの。
旧プログラム
var mediumImageUrlValue = getValue(item[i], 'mediumImageUrl');
↓
新プログラム
var mediumImageUrls = item[i].getElementsByTagName('mediumImageUrls');
var mediumImageUrlValue = mediumImageUrls[0].getElementsByTagName('imageUrl')[0].firstChild.nodeValue;
いったん複数枚の画像を取得し、最初の画像だけを利用しているわけです。
以上のようにプログラムを変更すれば、
当講座に掲載したサンプルプログラム通りで動きます。