【PHP】Web APIを作ってみた。【Lakers】
普段APIを使う側なので、作るのも体験しようかと思い簡単なAPIを作ってみました。
NBAが大好きなので、NBAに関するAPIを作りたいと思い、その中でもLeBron、ADが率いるLakersが好きなので、Lakersに関するテーマにしました。
API概要
PPG(1試合平均得点)、RPG(1試合平均リバウンド)、APG(1試合平均アシスト)のスタッツをパラメータに指定し、そのスタッツ以上の選手の情報をjson形式で返すというものです。
今回は2020-21シーズンのスタメンのデータを利用します。
実行結果
パラメータに何も指定しなかった場合
http://localhost:8888/make_api/my_api.php
ちなみにChromeの拡張機能を使っています。
chrome.google.com
ソースコード
<?php //db接続処理 try { $db = new PDO('mysql:dbname=lakers_api_db;host=localhost;charset=utf8', 'root', 'root'); } catch (PDOException $e) { echo 'DB接続エラーが起こりました。'. $e->getMessage(); } //パラメーターはppgとrpgとapg //指定された値以上の選手の情報をjson形式で出力する if (isset($_GET['ppg'])) { //平均得点を取得 $PPG = $_GET['ppg']; } else { //0とすれば指定しないのと同じ $PPG = 0; } if (isset($_GET['rpg'])) { //平均リバウンドを取得 $RPG = $_GET['rpg']; } else { $RPG = 0; } if (isset($_GET['apg'])) { //平均アシストを取得 $APG = $_GET['apg']; } else { $APG = 0; } $statement = $db->prepare('SELECT * FROM member WHERE ppg >= ? AND rpg >= ? AND apg >= ?'); $statement->execute(array($PPG,$RPG,$APG)); $row_count = $statement->rowCount(); $loop_counter = 0; header("Content-type: application/json; charset=utf-8"); echo "[\n"; while ($info = $statement->fetch()) { $loop_counter++; echo "{\n"; echo "\"name\":"."\"".$info['name']."\","; echo "\n"; echo "\"number\":".$info['number'].","; echo "\n"; echo "\"PPG\":"."".$info['ppg'].","; echo "\n"; echo "\"RPG\":"."".$info['rpg'].","; echo "\n"; echo "\"APG\":"."".$info['apg']."\n"; if ($row_count==$loop_counter) { echo "}\n"; break; } echo "},\n"; } echo "]";