MENU
WebAPI

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

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

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

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

ぐるなびWebサービスのぐるなびAPIを例にPHPプログラムでの簡単なWebAPIの呼び出し方です


PHPでWebAPI呼び出し プログラミングを始めよう

PHPプログラムでWebAPIを呼び出して、Webサービスが提供しているデータを取得し、Webサイトで利用したり、記事に挿入したり、ページを作成することができます

PHPでWebAPI呼び出し 簡単なプログラムで利用してみよう

WordPressでサイトを運営していますが、WordPressもPHPを利用していますから、WordPressとPHPで作成するプログラムは融合しやすいと思います

PHPに対応しているサーバーであれば、PHPで作成したプログラムを動かすことが可能です

WordPressを利用しているサーバーであれば、PHPのプログラミングに使えることが多いのです

わりと簡単なPHPプログラムで、WebAPI利用の練習をすることができます

こちらは、WordPress内からWebAPIを呼んでいるのではなく、サーバー上のディレクトリにPHPで作成したindex.phpを置いて、index.phpの中からWebAPIで情報を取得する関数を呼び出してページを生成している簡易で軽いサイトです

レストラン検索(6月末で終了しました)

ぐるなびWebサービスのぐるなびAPIを使っているもので、レストラン情報をフリーワード検索してきます

PHPでの自作サイトですが、ぐるなびWebサービスが有料化、法人対象になると検索が動作しなくなります

そこでYahoo!デベロッパーネットワークを使ったサイトも作りました

PHPでWebAPI呼び出し Yahoo!デベロッパーネットワーク

ぐるなびWebサービスの無料サービスが終了するので、Yahoo!デベロッパーネットワークのAPIを利用してみました

Yahoo!APIを使用したお店・施設の検索(Yahoo!のAPIを利用した自作サイトです)

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

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

ヤフーAPIの使い方 Yahoo!デベロッパーネットワークを使ってみようヤフーAPIの使い方 Yahoo!デベロッパーネットワークを使ってみよう YOLP 地図情報 Yahoo!ショッピングAPI...

 

ぐるなびWebサービスは有料化、法人対象になってしまいますが、ぐるなびAPIについては、こちらに使い方の導入編を書いてますので参考にしてください

ぐるなびAPI ぐるなびWebサービス
ぐるなびAPIの使い方 ぐるなびWebサービスを使ってみようぐるなびAPIの使い方 ぐるなびWebサービスを使ってみよう 飲食店情報のAPI ぐるなびAPI 食べログAPI ホットペッパーAPIについて...
ぐるなびAPIレストラン検索API
ぐるなびAPIのレストラン検索APIで飲食店情報検索ぐるなびAPIのレストラン検索API 飲食店API レストラン・飲食店の情報検索 API仕様と使い方...

 

PHPでWebAPI呼び出し 簡単プログラミング事例

ぐるなびAPIは有料化されましたが、WebAPIの使い方は他のAPIでもあまり変わりはないので、ぐるなびAPIを例にしています

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

PHPでWebAPI呼び出し ぐるなびAPIを使ってみよう

ぐるなびAPIのレストラン検索APIを使用したPHPの自作プログラム例です

ぐるなびのレストラン検索のWebAPIに、検索してくる店舗数と、何ページ目かと、フリーキーワードを渡すと、ぐるなびAPIはJSON(JavaScript Object Notation)形式のテキストファイルを返してくれる関数です

ぐるなびのレストラン検索のWebAPIが返してくるテキストファイルの中身は、指定した条件で検索を行ってヒットした店舗のレストラン情報のテキストデータ列です

返ってきたテキストファイルの中身を、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の関数はphp.netで使用方法を確認することが多いです

言語リファレンスも関数リファレンスも辞書的に利用しています

PHPマニュアル

言語仕様やテクニックは一冊詳しいのを持っておくと後々まで使えますよね

created by Rinker
¥4,180
(2021/08/04 08:50:21時点 Amazon調べ-詳細)

PHPでWebAPI呼び出し 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の後ろに「?」を付けて、その後にパラメータを「&」でつなげていきます

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));

 

このURLをブラウザに入力すると返ってくるテキストファイルの内容がブラウザに表示されますから、WebAPIがどんなものなのか実感できると思います(keyidがないとできないのでまずはぐるなびWebサービスにあるAPIテストツールを使ってみてください)

Webサービスからデータを取得するWebAPIは、このような感じで指定のURLに必要なパラメータをくっつけてアクセスするとテキストファイルが返ってくるというものです

このテキストファイルをPHPのプログラムの中で使えるようにして、Webページなどに利用するわけです

フリーワード検索ではなく、店舗IDで店舗指定して指定店舗だけの情報を取得する場合のレストラン検索APIのパラメータの設定はこのようになります

関数のパラメータで店舗IDを渡すようにして、レストラン検索APIでIDを設定して情報取得します

店舗IDは、フリーワード検索などで検索して取得する店舗情報のリストの中に入っています

$search_url = "https://api.gnavi.co.jp/RestSearchAPI/v3/?"
. "keyid=" . GURUNAVIAPI_ACCESS_KEY
. "&id=" . $rest_id;

 

PHPでWebAPI呼び出し 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仕様をみてください

こちらの記事も参考にしてください

ぐるなびAPIレストラン検索API
ぐるなびAPIのレストラン検索APIで飲食店情報検索ぐるなびAPIのレストラン検索API 飲食店API レストラン・飲食店の情報検索 API仕様と使い方...

PHPでWebAPI呼び出し 取得データを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でWebAPI呼び出し 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でWebAPI呼び出し 簡単なWebAPI作例

PHPでWebAPI呼び出し 簡単なWebAPIの作例

前述したこちらのレストラン検索サイト

URLにパラメータを渡してアクセスするとHTMLのレスポンスを返すサイトなので、一種の簡易的なWebAPIとも考えられます

レストラン検索(自作サイトです)

ぐるなびWebサービスや下記のWebサービスは、レスポンスでjsonファイルやXMLファイルを返すので、ブラウザでアクセスすると文字列が羅列されるだけです

ですから、プログラムでレスポンスを受けて解析して処理することになります

jsonやXMLではなく、HTMLに整形して、ブラウザからのアクセスにレスポンスするとそのままWebページが表示されることになります

こちらのようにパラメータを設定して、アクセスするとぐるなびWebサービスから取得できる検索結果をWebページとして表示できるように返しています

クエリー:マグロ 県:神奈川県 カテゴリー:和食 ランチ:あり 個室:あり


https://boccitabi.work/s_gnavi/?query=マグロ&area_pref=PREF14&category_l=RSFST01000&g_lunch=1&g_takeout=0&g_deli=0&g_bento=0&g_caterling=0&g_private=1

 

簡単なところから試してみて、イメージをつかんでみてください

created by Rinker
¥2,420
(2021/08/04 08:50:22時点 Amazon調べ-詳細)

PHPでWebAPI呼び出し 使えるWebサービス例

なじみのあるサービスでもWebAPIが使えるサービスがけっこうあります

WebAPI 提供サービス例の一覧

こちらは、商品情報やレストラン情報、旅行情報、観光スポット、口コミなど身近な情報を提供しているWebAPIのサービスです

ぐるなび、楽天、グーグル、ヤフー、リクルート、アマゾンなど馴染みの深い情報提供サービスです

利用目的や商用利用の可不可、アフィリエイト利用条件などそれぞれのWebサービスの利用規約がありますから、利用規約に従って利用しましょう

ぐるなびWebサービス(無料サービス停止します)

Rakuten Developers(無料)

Google Maps Platform(有料)

Yahoo!デベロッパーネットワーク(無料)

リクルートWebサービス(無料)

AmazonアソシエイトのProduct Advertising API(無料)

楽天やアマゾンはアフィリエイトのURLもWebAPIで取得できますから、アフィリエイトもできるようになっています

ぐるなびやYahoo!は、アフィリエイトに利用するならバリューコマースを利用することになります

バリューコマースのLinkSwitch機能と組み合わせることでアフィリエイトができます

無料簡単登録 バリューコマース

WebAPIサービスを使う場合は利用条件を確認しましょう

ぐるなびAPI商用利用
ぐるなびAPIの商用利用とアフィリエイトについてぐるなびAPIの商用利用とアフィリエイトについて WebAPIの商用利用...

WebAPI 利用しているレンタルサーバーについて

WebAPIを利用する際に使っているレンタルサーバーについてです

WordPressレンタルサーバー比較
レンタルサーバー比較 WordPress・プログラミングにもおすすめのサーバーはレンタルサーバー比較 WordPressにもプログラミングにもおすすめのサーバー WordPress・PHP対応に適したレンタルサーバー比較...
Translate