案ずるより産むが易し 意外と簡単 楽天ウェブサービスを使ってみる(5)
「案ずるより産むが易し 意外と簡単 楽天ウェブサービスを使ってみる(1)~(4)」では「 楽天Kobo電子書籍検索API 」を題材にして、その利用方法を説明しました。その時のリクエストフォーマットは「xml」でしたが、「json」の場合はどうなるのかというのが今回のテーマです。
XMLは「Extensible Markup Language」、JSONは「JavaScript Object Notation」の略で、どちらもWeb上でデータのやり取りを行う際のデータフォーマットです。最近はXML形式よりもJSON形式が用いられることが多いそうです。XML形式はデータをタグで囲む記述方式のためデータが大きくなりやすく、それが全体のパフォーマンス低下につながるということもその理由にあるようです。
「 楽天Kobo電子書籍検索API 」のデータをJSON形式で受け取るためには、リクエストで「xml」を「json」に変更します。受け取ったデータは json_decode()関数で配列に変換して、データ処理をします。
<?php
// -----------------------------------------------------------------------------------
// 配列を使って、基本的なリクエストを作成します
// -----------------------------------------------------------------------------------
$_BASEURL ='https://app.rakuten.co.jp/services/api/Kobo/EbookSearch/20170426'; // 楽天Kobo電子書籍検索クエストURL
$_PARAMS = array(); // パラメータ用配列
$_PARAMS['applicationId'] = '1234567890123456789'; // あなたのアプリID
$_PARAMS['affiliateId'] = '0123abcdef567890ghijklmn009'; // あなたのアフィリエイトID
$_PARAMS['format'] = "json"; // ←ここをjson にする
$_PARAMS['keyword'] = "ストライク・ザ・ブラッド"; // キーワードを入力します
$_PARAMS['koboGenreId'] = ""; // ジャンルを指定する場合はそのIDを入力します
$_PARAMS['hits'] = 12; // 1ページあたりの取得件数 1から30までの整数
$_PARAMS['page'] = 2; // 取得ページ 1から100までの整数
・
・
・
$_PARAMS = array_filter($_PARAMS, "strlen"); //配列の中の空要素を削除します
$canonical_string = ''; // canonical string を作成します
foreach ($_PARAMS as $k => $v) {
$canonical_string .= '&'.$k.'='.$v;
}
$canonical_string = substr($canonical_string, 1); // 最初の文字'&'を除きます
$_REQ_URL = $_BASEURL.'?'.$canonical_string; // BASEURLにパラメータを付加してリクエストを生成します
・
・
・
取得したデータを配列に変換して表示します。
// -----------------------------------------------------------------------------------
// APIクエストして、データを確認します
// -----------------------------------------------------------------------------------
$_BookData = @file_get_contents ($_REQ_URL ); //APIリクエストする
$_DATA = json_decode($_BookData, true); //jsonデータを配列データに変換
・
・
・
foreach($_DATA['Items'] as $Hit){ //foreachで値を順次取り出して処理します
$_ITEM_TITLE = $Hit['Item']['title']; // 書籍タイトル
$_ITEM_TITLE_KANA = $Hit['Item']['titleKana']; // 書籍タイトル カナ
$_ITEM_SUB_TITLE = $Hit['Item']['subTitle']; // 書籍サブタイトル
$_ITEM_SERIES_NAME = $Hit['Item']['seriesName']; // 本のシリーズ名
$_ITEM_AUTHOR = $Hit['Item']['author']; // 著者名
$_ITEM_AUTHOR_KANA = $Hit['Item']['authorKana']; // 著者名カナ
$_ITEM_PUBLISHER_NAME = $Hit['Item']['publisherName']; // 出版社名
$_ITEM_NUMBER = $Hit['Item']['itemNumber']; // 商品番号
$_ITEM_CAPTION = $Hit['Item']['itemCaption']; // 商品説明文
$_ITEM_SALLE_DATE = $Hit['Item']['salesDate']; // 発売日
$_ITEM_PRICE = $Hit['Item']['itemPrice']; // 税込み販売価格
・
・
・