【spotify API】Guzzle PHP HTTP clientで、idを入力してspotify曲情報を取得するwebアプリ作成
| 更新: 2025/09/15 | 3655文字
今回はライブラリGuzzle PHP HTTP clientを使用して、idを入力するとspotify曲情報を取得するwebアプリを作成しました。前回はjavascriptで作ったんですけど、clientIdが右クリックでソース見ると丸見えという状況だったので、サーバーサイド処理に切り替えたわけです。早速コードや動作状況を確認していきましょう。
目次
前回までのあらすじ
まず、10933/how-to-use-spotify-api/の記事で『clientid取得&javascriptでspotify APIにアクセス』というところまで行っています。ここでclientId丸見えを避けるため、サーバーサイド処理するためPHPのGuzzle PHP HTTP clientを導入。
Guzzle PHP HTTP clientインストール時に『pcを新しくして、xamppも初期状態だった・zipエクステンション有効でなかった』という理由でコマンドインストール不可だったのに対処したので、今回はここから行います。
Spotify for Developersアプリ登録&APIを叩いて情報取得
https://division-web.atelier-ss-agency.com/10933/how-to-use-spotify-api/
『failed to download 〇〇 The zip extension is missing~』ライブラリインストール不可に対処した
https://division-web.atelier-ss-agency.com/10946/how-to-resolve-the-zip-extension-is-missing-error/
Guzzle PHP HTTP clientについて
Guzzle PHP HTTP clientとは?
リポジトリ内の文をサクッと読んだ感じだとHTTP リクエストの送信やWebサービスとの統合を容易に行えるように設計されたライブラリとのことです。
シンプルインターフェースでクエリ文字列、POST リクエスト、大容量アップロードのストリーミング、大容量ダウンロードのストリーミング、HTTP Cookie の使用、JSON データのアップロードなどを扱えます。とりあえずは使ってみるとしましょうか。
Guzzle PHP HTTP clientリポジトリ
https://github.com/guzzle/guzzle
Guzzle PHP HTTP clientインストール方法
次にGuzzle PHP HTTP clientを、ローカル環境にインストールしてみます。管理人のローカル環境はxampp & composerが使える状態です。以下のコマンドを実行しました。
cd xampp\htdocs\study\2025-09-spotify-api
composer require guzzlehttp/guzzle
『D:』というのは、PC新しくしてxamppをDドライブに入れていたので、ドライブを移動するのに使用。cdはいつものchange directoryで作業フォルダに。あとはcomposer requireでインストール、という流れです。
インストール完了時のコンソール。設定したので赤文字エラーはでませんでした。
vendorの中身です。今回もオートロードで一発呼び出しできますね。
Guzzle PHP HTTP clientで、idを入力してspotify曲情報を取得するwebアプリ・
今回は、PHPコード部分をメインに進めます。Client ID&Client secret取得については、前回のものから流用します。アプリ登録・Client ID&Client secret取得の方法を知りたい方は前回記事もご覧ください。
ディレクトリ構成
ローカル場ですが、テスト用にサーバーにあげたものと同様です。こんな感じの構成になっています。追加したのがindex.php(フロント)、spotifyApiClass.php(API通信)、controller.php(データを受け取って成形しフロントに渡す)の3ファイル。
このほか、noimg.png画像ファイルがありますが、(たぶんあんまりないと思うけど)ジャケット画像が空だった場合につかうやつです。
index.php(フロント部分・id入力フォームと情報表示)
フロントの部分です。CSSとかは省略。楽曲id入力フォームとリセットボタン・取得結果表示部分です。処理はほとんど裏でやっているので、テンプレートのビューみたいなやくわりになっています。下のほうにあるjavascriptは、リセットボタン用。フォームの中身を空にする・urlパラメータなしにするなどの対応。
spotifyApiClass.php(アクセストークン・データ取得やエラーハンドリンク)
Guzzleを使ってAPI通信やエラーハンドリングを行う部分です。パラメーターclientIdやclientSecretを受け取って、アクセストークンを取ってきます。実際の楽曲データは、その下のgetTrackDataメソッドが行います。これにはtrackIdをパラメータで渡して、$trackDataを返します。この中にデータが入っています。
controller.php(データを受け取って成形しフロントに渡す)
ここはわかりやすいかも。clientIdとclientSecretをセットしておいて、trackIdセットした状態でGETメソッドアクセス時にspotifyApiClass実行・データを成形する部分です。
とる項目は『imgUrl・トラック名・アーティスト名・アルバム名・Spotify URL・再生時間』としました。
動作確認サンプル・操作例
サーバーにあげた動作確認サンプルは、こんな感じになりました。真ん中のフォームにspotifyの楽曲idを入れてボタンをおすと下の表示欄にでます。パラメータや表示のリセットにはリセットボタンを使用します。以下のurlから、実際に操作してみてください。
GuzzleHttp & spotify APIてすと
https://division-web.atelier-ss-agency.com/test/2025-09-spotify-api/
いくつか曲情報を取ってみた例
それでは、管理人がプレイしたゲームで、いくつかサントラの情報を取ってみましょうか。
『5Vm9k7scnb0zKC6ZLY4l7B』を渡してみます。これイース8のエタニア編最終ボスバトルテーマの歌入りバージョンなんすよね。
『1kPIZIydT2ZC42NmOB381d』を渡してみます。
サガスカーレットグレイスのフィールド曲。
『2dzClUD7FW6STMG1FhbYUy』を渡してみます。
ファイナルファンタジー外伝ってついてた頃の聖剣伝説・フィールド曲。
エラーハンドリングの例(存在しないid/空送信)
いくつかエラー例もご紹介。
まずは曲データが存在しないid。『123』とか、適当な数字で投げても曲データが戻ってきません。そのときのエラー表示。
また、フロントでフォームに『required』をつけているので、ボタンから空送信はできないようになっています。
しかしGETメソッドで、『?trackId=』と、idの値を入れないで、直接urlを叩くことはできます。そのときは『IDは必須です』のメッセージを出す形に。
あとがき・まとめ
- Guzzle PHP HTTP clientでは、API通信を含むアプリをシンプルに作成することができる
- Guzzleは主に通信部分、フロントと分離させてもメンテしやすいかも
まとめると、こんなところでしょうか。とりあえず、IDがわかる段階だとspotify直接ブラウザで見れば情報もわかるので、あんまり実用性はないんですけど(笑)、今回作ったのを応用してなんかできればいいかなーと思います。
【カテゴリ】- PHP
【タグ】- PHPライブラリ, spotify_API