LaravelでAPIを呼び出してみたい
と考えている人は多いと思います。
外部のAPIを利用する事で、サービスの幅を広げる事ができますし、新しいプロダクトのアイデアも広がります。
しかし、初めてAPIを呼び出す場合、呼び出す方法がよくわからないですよね?
そこで今回は、LaravelでAPIを呼び出して(HTTP通信を行い)結果を画面に表示する一連の流れを解説していきます。
Laravel6系と5系で動作確認済みです。
GETメソッドとPOSTメソッドの二つのパターンでAPI呼び出しを行います。
開発環境
- MacBook Pro (macOS Catalina バージョン10.15.1)
- PHP 7.3.9
- Laravel Framework 6.7.0
Composerはすでにインストールしているとします。
API呼び出しの前準備
新規プロジェクト作成(すでに作成している人は省略)
まずは新規プロジェクトを作成します。
プロジェクトのカレントディレクトリに移動して、ローカル開発サーバを立ち上げます。
http://127.0.0.1:8000にアクセスします。
ページが正常に表示されていればOKです。
コントローラを作成&ルーティング変更
コントローラも作成しておきます。
web.phpを編集します。
GuzzleをインストールしてHTTP通信をする
HTTP通信をする方法はいくつかありますが(file_get_contents関数やcurl関数など)、今回は一般的に使用されているGuzzleと呼ばれるパッケージを使用します。
カレントディレクトリに移動して、以下のコマンドを実行してGuzzleをインストールします。
composer.jsonに赤線で示した記載が追記されたらOKです。
APIを呼び出してみる
Googleで「API 一覧」と検索してみるとわかりますが、多くのAPIが公開されています。
今回はその中から、Qiita APIを使ってみたいと思います。
このAPIはQiitaの記事やユーザー情報を取得できるAPIです。
【GET編】コントローラに処理を記載して、viewで表示する
GETメソッドでAPIを利用してみます。
QiitaのAPIを叩いて、Laravelのタグがついた記事を日付順に20件取得してみましょう!
作成したPostコントローラに処理を記載します。
以下のように記述する事で、APIに対してGETメソッドでHTTP通信を行うことができます。
APIとHTTPを行い受け取ったデータに対して、getBody()メソッドを使用してメッセージの本文を取得します。
さらにAPIで取得したデータはJSON形式のため、json_decode()関数を利用してJSON文字列を配列に変換します。
結果を表示するviewは、index.blede.phpを新たに作成します。
取得した値は配列に変換しているため、$post['title'] のような記述で値を表示することが可能です。
※本来はheadタグは再利用性を高めるために別ファイルに切り出しますが、今回は簡略化のためそのままです。
http://127.0.0.1:8000 にアクセスすると、Qiita APIで取得した値が表示できているのがわかります。
【POST編】コントローラに処理を記載して、viewで表示する
次はPOSTメソッドでAPIを利用してみます。
Qiita APIを利用して、記事を投稿してみましょう。
流れとしては、
という形です。
web.phpにルーティングを追加します。
投稿用のフォームform.blade.phpを新規作成します。
※本来はheadタグは再利用性を高めるために別ファイルに切り出しますが、今回は簡略化のためそのままです。
フォームはこのような見た目です。
Postコントローラに処理を記載します。
以下のように記述する事で、APIに対してPOSTメソッドでHTTP通信を行うことができます。
値を含めてリクエストを送りたい場合は、以下のように渡す値を連想配列にします。
今回は値をJSONで送りたいので、オプションとして渡す配列のキーを 'json' 、値を先ほどの$dataにします。
またQiitaに記事を投稿する場合は、アクセストークンをヘッダーに含める必要があります。
Qiita APIはレスポンスで自分が投稿した記事の詳細情報を返すので、そこから記事のURLを取得しています。
それでは、http://127.0.0.1:8000/create にアクセスしてフォームからQiitaに記事を投稿してみます。
記事投稿ができました!
今回はLaravel + Guzzleで外部のAPIとHTTP通信を行いました。
今回紹介した内容以外にもGuzzleは様々な使い方があるので、詳細はドキュメントを参照してください。
他にも解説して欲しい内容があれば、是非ともコメント欄やお問い合わせからメッセージをください!
これから「Laravelを勉強したい!」と考えている人は一冊書籍を持っておくと体系的に勉強できます。
Laravelを使用したアプリ開発を学ぶのであれば「青本」がおすすめです。
私もこの書籍から入りました!
「Webサービスを作りたい!」という方に向けて記事を書きました。
業務未経験からポートフォリオなしでWebエンジニアに転職した際の経験談を語りました。
30代未経験からのエンジニア転職を成功させるための、プログラミングスクールの選び方について書きました。
コメント