WebページにAPIを利用
HTMLとCSSと少ーしPHPがわかる状態で初めてのAPIだったので、同じような境遇に再びなったときの自分の忘備録として残します。
※ちなみにWordPressを使っているサイトなのでPHPが使える環境です!
あくまでも自分用なので、色々わかりづらいところもあると思います。
読むのめんどくせ〜って人は下をコピペして使ってください。
<?php
$base_url = 'https://bitflyer.jp';
$responce = file_get_contents($base_url.'/api/echo/price');
$array = json_decode($responce,true);
echo("<h3>販売価格</h3><p class='p-ask'>".$array["ask"]."</p>");
echo("<h3>買取価格</h3><p class='p-bid'>".$array["bid"]."</p>");
echo("<h3>中間値</3h><p class='p-mid'>".$array["mid"]."</p>")
?>
そもそもAPIが何かわからなかった
ハッカソンとかに出たり、エンジニアの人と一緒にいたりすると**「API叩けば良くね?」みたいなワードが出て来ました。
初めての時は「叩くって何!?」**ってなるんですけど、私的解釈でいうと
情報や機能をリンクで呼び起こして、自分のサイトやプロダクトで表示・利用するということでした。
また、初めてのときに立ちはだかった壁は、WebデザイナーでHTMLとCSSがわかりますよ〜ってレベルだと、呼び出しても次の処理がわからない。といった点でした。
こっから手順の話
さて本題。とりあえず思いつく順で説明して行きましょう。
まずは、BitflyerさんのAPI一覧のページにアクセスして、どういったことができるのかというのを確認しましょう。▶︎こちらからどぞ
今回は「レート取得」を'叩き'ます。
サイトを見て、**認証・リクエスト・レスポンス…何これ?**となりましたが、今ならなんとなくわかる。まずはそれぞれの役割を見て行きますか。
認証
なし
おそらく、アクセスするための許可証のようなものでしょう。今回はないですね。
リクエスト
GET /api/echo/price
呼び出す情報を特定するカテゴリー指定の呪文。
$responce = file_get_contents($base_url.'/api/echo/price');
上記のようにfile_get_contents
で「お前の()内のところからこのデータを引っ張ってきますね」という記述になります。
レスポンス
{
"mid" : 41022,
"ask" : 41812,
"bid" : 40233
}
呼び出す情報(召喚獣)の表示場所のターゲットとなる、魔法陣。
なお、魔法陣と召喚獣の対応表は以下とのこと。
mid: int型 必須 仲値
ask: int型 必須 bitFlyerの1BTC販売価格
bid: int型 必須 bitFlyerの1BTC買取価格
前後しますが、次は「API共通事項」という箇所を確認して見ましょう。
エンドポイントURL
エンドポイントURL https://bitflyer.jp/
エンドポイントってのはAPIを呼び出すときにどのサイトから呼び出しますよ〜ってな感じのものでした。
$base_url = 'https://bitflyer.jp';
コードって何書いたか忘れることが多いので、エンドポイントは名前つけて別枠にしました。
文字列の形式指定
APIのレスポンスデータは、特に断りのない場合を除き、 JSON(※1)形式の文字列とします。
JSON…どうしようわからん…
となりましたが、PHPに変換して利用しました。
変換方法はリファレンスにて調べるとわかりますが、それも見つけるまで大変だったよ。
JSONのままではWebページにはレート表示されません!表示できる形に変換する必要があった
なんかこれをデコードやらエンコードやらいうらしいですが、んなもん知らないよ〜ってなったのでここも苦労しました。Google先生ありがたや。
json_decode
というのを利用して、取得した内容をPHPの形式に変換しました。
$array = json_decode($responce,true);
んで、変換した後はecho()
にて$array[]
で、[]内にレスポンスで表示したい値の名前を入れれば表示されます。
echo("<h3>販売価格</h3><p class='p-ask'>".$array["ask"]."</p>");
echo("<h3>買取価格</h3><p class='p-bid'>".$array["bid"]."</p>");
echo("<h3>中間値</3h><p class='p-mid'>".$array["mid"]."</p>")
まとめ
いや〜思いつくままに書いたんで、わかりづらさMAXですネ。
とりあえず、APIを叩く、という作業工程を残せたんで、これで良しとします。
ポイントとしては
- どこから取得するかを確認
- なんの文字列形式で返ってくるか確認
ですね。以上。