WebAPI

PHPでAPIを呼び出し 簡単なプログラムで使ってみよう

この記事では商品の紹介にアフィリエイト広告を利用しています 「広告について」

PHPでWebAPIを呼び出し

API=Application Programming Interface

簡単なプログラムでWebAPIを使ってみよう

Web上にある様々なデータサービスのサーバーから、APIを使ってデータを取得し利用することができます

WebサーバーにアクセスするためのインターフェースがWebAPIですね

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マニュアルの言語リファレンス、関数リファレンスを辞書的に利用して確認しています

PHPマニュアル

WordPressでサイトを運営していますが、WordPressもPHPを利用しています

プラグインを作ることもできます

WordPressとPHPで作成するプログラムは融合しやすいです

PHPでAPI呼び出し 簡単なWebAPIの使用例

こちらはPHPでWebAPIを呼ぶ自作のお店・施設の検索サイトです

ぐるなびWebサービスのWebAPIが有料化されたのでYahoo!デベロッパーネットワークのAPIを利用しています

Yahoo!デベロッパーネットワークのAPIは無料で利用できます

Yahoo!APIを使用したお店の検索

ぐるなびWebサービスは飲食店の情報でしたが、Yahoo!のAPIはYahoo!ロコの飲食店(PayPayグルメ)以外にも、Yahoo!ロコのショッピング、レジャー、旅行、暮らし、生活で利用する施設の検索が可能です

こちらに使い方の導入編を書いてますので参考にしてください

オリジナルWEBサイト制作 PHP・Laravelを学ぼう

【PHP/Laravelコース】PHP/Laravelを学んでオリジナルWEBサイト制作

無料の説明動画配信無料プログラミング体験無料オンライン相談を実施しています

キャリアアップ・転職・副業・複業・兼業へのチャレンジを考えるなら無料キャリアカウンセリング副業コースもあります

【PHP/Laravelコース】
PHP/Laravelを学んでオリジナルサービス開発

無料体験 無料動画 無料相談
無料キャリア相談 副業チャレンジ