PHPでWebAPIを呼び出し
API=Application Programming Interface
簡単なプログラムでWebAPIを使ってみよう
Web上にある様々なデータサービスのサーバーから、APIを使ってデータを取得し利用することができます
WebサーバーにアクセスするためのインターフェースがWebAPIですね
Contents
PHPでAPI呼び出し 簡単プログラミングを始めよう
PHPプログラムでWebAPIを呼び出して、Webサービスが提供しているデータを取得し、Webサイトで利用したり、記事に挿入したり、ページを作成することができます
簡単なところからプログラムを作成して試し、イメージをつかんでみてください
PHPでAPI呼び出し ぐるなびAPIを使ってみた
ぐるなびWebサービスのぐるなびAPIを使って、レストラン情報をフリーワード検索しているプログラムを例に解説します
ぐるなびAPIは有料化、法人対象になりましたが、WebAPIの使い方は他のAPIでもあまり変わりはないので、ここではぐるなびAPIを例にして記載しています
ぐるなびのレストラン検索のWebAPIは、検索する店舗数と、何ページ目かと、フリーキーワードを渡すと、JSON(JavaScript Object Notation)形式のテキストファイルを返してくれます
ぐるなびのレストラン検索のWebAPIが返してくるテキストファイルの中身は、指定した条件で検索を行ってヒットした店舗のレストラン情報のテキストデータ列です
返ってきたテキストファイルの中身を、PHPのプログラムの中で使えるように配列に入れて使います
PHPでAPI呼び出し プログラム作成例
ぐるなびAPIのレストラン検索APIを使用したPHPの自作プログラム例です
// START
function gurunavi_search_restlist_v3($hit_per_page=30, $offset_page=1, $freeword) {
$ret = FALSE;
$search_url = "https://api.gnavi.co.jp/RestSearchAPI/v3/?"
. "keyid=" . GURUNAVIAPI_ACCESS_KEY
. "&hit_per_page=" . $hit_per_page
. "&offset_page=" . $offset_page
. "&freeword=" . urlencode_rfc3986(mb_convert_encoding($freeword, "UTF-8", INTERNAL_ENC));
$json = json_decode(mb_convert_encoding(@file_get_contents($search_url, false, ARR_CONTEXT_OPTIONS), "UTF-8", INTERNAL_ENC));
if ($json !== FALSE) {
$ret = array();
$n = 0;
foreach ($json->rest as $shop) {
// 中略
$ret[$n]['id'] = (string)$shop->id;
$ret[$n]['name'] = (string)$shop->name;
$ret[$n]['address'] = (string)$shop->address;
// 中略
$n++;
}
if (count($ret) <= 0) {
$ret = FALSE;
}
}
return($ret);
}
// END
PHPでAPI呼び出し プログラム例の解説
PHPでAPI呼び出し APIの呼び出し方
WebAPIの呼び出し方は、指定されたURLにパラメータを付けてアクセスすることで行っています
例えば、ぐるなびのレストラン検索APIの場合のURLはこちらでした
URL:https://api.gnavi.co.jp/RestSearchAPI/v3/
このURLの後ろにAPI仕様に記載されているパラメータを付けてアクセスします
https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=[アクセスキー]&hit_per_page=30&offset_page=1&freeword=ラーメン
指定のURLの後ろに「?」を付けて、その後にパラメータを「&」でつなげていきます
PHPでAPI呼び出し APIのパラメータ解説
それぞれのパラメータについて説明します
keyidは、WebAPI利用者ごとに割り当てられるIDで、ぐるなびWebサービスに登録するともらえます
hit_per_page=30は、最大30件の店舗情報を返してくださいという検索件数指定のパラメータです
offset_page=1は、ヒットした検索結果の中から最初の30件(hit_per_pageの件数)を返してくださいということ
freeword=ラーメンは、検索ワードを「ラーメン」にして検索してくださいです
PHPプログラム内では検索ワード「ラーメン」の文字列は、文字コードUTF-8でURLエンコードして使うことになります
上記のPHPのプログラムの中でAPIにアクセスするURLを作っているのがこの部分です
$search_url = "https://api.gnavi.co.jp/RestSearchAPI/v3/?" . "keyid=" . GURUNAVIAPI_ACCESS_KEY . "&hit_per_page=" . $hit_per_page . "&offset_page=" . $offset_page . "&freeword=" . urlencode_rfc3986(mb_convert_encoding($freeword, "UTF-8", INTERNAL_ENC));
Webサービスからデータを取得するWebAPIは、このような感じで指定のURLに必要なパラメータをくっつけてアクセスするとテキストファイルが返ってくるというものです
このテキストファイルをPHPのプログラムの中で使えるようにして、Webページなどに利用するわけです
URLをブラウザに入力すると返ってくるテキストファイルの内容がブラウザに表示されますから、WebAPIがどんなデータを返してくるのか実感できると思います
フリーワード検索ではなく、店舗IDで店舗指定して指定店舗だけの情報を取得する場合のレストラン検索APIのパラメータの設定はこのようになります
関数のパラメータで店舗IDを渡すようにして、レストラン検索APIでIDを設定して情報取得します
店舗IDは、フリーワード検索などで検索して取得する店舗情報のリストの中に入っています
$search_url = "https://api.gnavi.co.jp/RestSearchAPI/v3/?"
. "keyid=" . GURUNAVIAPI_ACCESS_KEY
. "&id=" . $rest_id;
PHPでAPI呼び出し Webページへ表示する
PHPでAPI呼び出し JSONファイルの利用方法
WebAPIで返ってくるテキストファイルは、Webサービスによって、JSONだったりXMLだったり、どちらか選べたりするのですが、ぐるなびAPIの場合は、JSONのみでした
レストラン検索APIのURLにパラメータ付きでアクセスし、返ってきたテキストファイルを配列に入れるというのがこの部分です
$json = json_decode(mb_convert_encoding(@file_get_contents($search_url, false, ARR_CONTEXT_OPTIONS), "UTF-8", INTERNAL_ENC));
$search_urlのURLにアクセスするとテキストファイルが送られてきますので@file_get_cotents関数は、指定ファイル($search_url)を文字列として読み込みます
mb_convert_encoding関数は、テキストファイルの文字エンコーディングをUTF-8に変換しています
json_decode関数でJSON形式のファイルをデコードして、PHPの変数$jsonに入れています
返ってくるJSONファイルの中身の仕様は、API仕様で確認します
PHPでAPI呼び出し 取得データをPHPプログラム内へ
WebAPIで取得したJSONファイルをPHPプログラム内の変数$jsonに入れました
変数$jsonの中身をPHPプログラムの中で利用できるように配列$retに代入していきます
$json->restはレストラン情報の配列なので、$shopに代入してから、配列$ret[][]にforeachで反復処理して代入し直していくという処理にしています
$jsonに入っているデータ分の反復代入処理を行うことで、この関数は配列$ret[][]を戻り値として返します
$ret = array();
$n = 0;
foreach ($json->rest as $shop) {
// 中略
$ret[$n]['id'] = (string)$shop->id;
$ret[$n]['name'] = (string)$shop->name;
$ret[$n]['address'] = (string)$shop->address;
// 中略
$n++;
}
PHPでAPI呼び出し Webページへの表示
WebAPIで検索結果を取得したレストラン情報のリスト中から、以下の情報を表示させるPHPプログラムの抜粋です
上記の関数の中で配列$ret[][]を戻り値にしましたが、この戻り値を$restsに代入しています
・レストランイメージ画像 ’shop_image1’
・レストランのサイトへのリンクつきレストラン名称 ’url’ ’name’
・住所 ’address’
・アスセス(路線・最寄り駅、出口、徒歩時間など)
’line’ ’station’ ’station_exit’ ’walk’
WebAPIを呼び出す自作の関数(gurunavi_search_restlist_v3)からの戻り値の配列$restsの中身をforeachでループして順次echo();で表示させています
<?php
//中略
$rests = gurunavi_search_restlist_v3($hit_per_page, $page_no, $freeword);
foreach ($rests as $rest) {
echo('<h2>' . $rest['name'] . '</h2>');
echo('<center>');
echo('<img src="' . $rest['shop_image1'] . '" alt="' . $rest['name'] . '" width="192">');
echo('</center>');
echo('<br />');
echo('<b><a href="' . $rest['url'] . '" target="_blank" rel="nofollow noopener">' . $rest['name'] . '</a></b>
');
echo("<b>住所</b> " . $rest['address'] . "<br />");
echo("<b>アクセス</b> " . $rest['line'] . ' ' . $rest['station'] . ' ' . $rest['station_exit'] . " 徒歩" . $rest['walk'] . "分 " . "<br />");
}
//中略
?>
PHPでAPI呼び出し 無料のWebAPIを使ってみよう
PHPでAPI 簡単なプログラムで試してみよう
利用するPHPの関数はphp.netで使用方法を確認することが多いです
PHPの細かい仕様を覚えていなくてもPHPマニュアルの言語リファレンス、関数リファレンスを辞書的に利用して確認しています
WordPressでサイトを運営していますが、WordPressもPHPを利用しています
プラグインを作ることもできます
WordPressとPHPで作成するプログラムは融合しやすいです
PHPでAPI呼び出し 簡単なWebAPIの使用例
こちらはPHPでWebAPIを呼ぶ自作のお店・施設の検索サイトです
ぐるなびWebサービスのWebAPIが有料化されたのでYahoo!デベロッパーネットワークのAPIを利用しています
Yahoo!デベロッパーネットワークのAPIは無料で利用できます
ぐるなびWebサービスは飲食店の情報でしたが、Yahoo!のAPIはYahoo!ロコの飲食店(PayPayグルメ)以外にも、Yahoo!ロコのショッピング、レジャー、旅行、暮らし、生活で利用する施設の検索が可能です
こちらに使い方の導入編を書いてますので参考にしてください
オリジナルWEBサイト制作 PHP・Laravelを学ぼう
【PHP/Laravelコース】PHP/Laravelを学んでオリジナルWEBサイト制作無料の説明動画配信、無料プログラミング体験、無料オンライン相談を実施しています
キャリアアップ・転職・副業・複業・兼業へのチャレンジを考えるなら、無料キャリアカウンセリング、 副業コースもあります
PHP/Laravelを学んでオリジナルサービス開発