Programing

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

WebAPIプログラミング

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

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

ぐるなびWebサービスのぐるなびAPIを例に、簡単なWebAPIの使い方を紹介してます


WebAPIを簡単phpプログラミングで使う

WebAPIを使ってWebサービスが提供しているデータを取得して、Webサイトの記事に挿入したり、ページを作成することができます

WebAPIをPHPの簡単なプログラムで利用してみよう

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

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

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

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

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

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

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

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

ぐるなびAPI ぐるなびWebサービス
ぐるなびAPIの使い方 ぐるなびWebサービスを使ってみようぐるなびAPIの使い方 ぐるなびWebサービスを使ってみよう 商用利用 アフィリエイト利用について...
ぐるなびAPIレストラン検索API
ぐるなびAPIのレストラン検索APIで飲食店情報検索ぐるなびAPIのレストラン検索APIで飲食店情報検索 API仕様と使い方...

WebAPI PHP 簡単プログラミング事例

WebAPIのPHPでの使い方 ぐるなび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

 

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がないとできないのでまずは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;

 

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仕様と使い方...

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++;
}

 

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 />");
 }
//中略
?>

 

WebAPIの使い方 使えるWebサービス例

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

WebAPI 提供サービス例の一覧

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

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

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

ぐるなびWebサービス(無料)

Rakuten Developers(無料)

Google Maps Platform(有料)

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

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

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

楽天やアマゾンはアフィリエイトのURLもWebAPIで取得できますから、アフィリエイトもできます

ぐるなびやYahoo!は、アフィリエイトに利用するならバリューコマースを利用するのがおすすめです

ヘッダーにタグを埋め込めば、リンクを自動的にアフィリエイトリンクに変換するLinkSwitch機能と組み合わせることで簡単にアフィリエイトできます

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

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

WebAPIの使い方 おすすめレンタルサーバー

WebAPIを使うためのプログラミングを行う際に使うサーバーについてです

サーバー契約を継続すると独自ドメインがずっと無料で使えるサービス「ドメインずっと無料」がお得です

WordPressをはじめたい、複数サイト運営したい、PHPでWebプログラミングしたい

安くて簡単で使いやすいロリポップ!サーバー(ライトプラン 詳細はこちら)がおすすめです

サイト規模拡大・アクセス増加には、ハイスピードやスタンダードプランへのアップグレードで対応

はじめてに手頃 ライトプラン 詳細はこちら
趣味からビジネスも スタンダードプラン 詳細はこちら
高速アクセス ハイスピードプランの詳細はこちら

はじめから高速・安定・高機能を求めるなら エックスサーバー

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

サイトのアクセスアップのための分析ツール

ウェブサイト運営・アクセスアップに欠かせない必需ツール

検索順位をボタン一発で調査、記録。検索順位チェックツールGRC