【Laravel】APIを使って天気予報を取得してみた

本投稿は TECOTEC Advent Calendar 2021 の20日目の記事です。

はじめに

こんにちは。決済認証システム開発事業部の阿部です。
2021年4月に新卒で入社し、サーバーサイドエンジニアをしています。

業務の中でAPIを触ることが多いため、今回はOpenWeatherAPI(天気予報)を例にとってAPIの使い方を紹介しようと思います。

準備

アカウント登録

まずは、こちらからアカウント登録を行います。
アカウント登録後、API Keyが発行されます。ページ上部の[My API Keys]をクリックします。
f:id:teco_abe:20211216111827p:plain

発行されたAPI Keyを一覧できるページが開きます。このページの中のKey欄にある文字列をテキストファイルなどに保存しておきます。 f:id:teco_abe:20211216113142p:plain

APIの使い方の確認

プログラムを書く前にAPIの使い方の確認をします。

ページ上部にあるナビゲーションメニューの[API]をクリックします。クリック後、利用可能なAPIの一覧が表示されます。
f:id:teco_abe:20211216114022p:plain 今回使用する「5 day /3hour forecast」というAPIの[API doc]をクリックすると、APIの使い方が例とともに紹介されているページが開きます。
このAPIでは、都市名、都市ID、郵便番号、位置情報のどれかをもとに指定された場所の5日間・3時間置きの天気予報を取得できます。
今回は都市名でデータを取得します。
「By city name」の欄を見てみます。この中で特に重要なのは「API call」と「Parameters」の部分です。
f:id:teco_abe:20211216115212p:plain 「API call」にはリクエストすべきURL、「Parameters」にはリクエスト時に必要な、送信すべき情報が書かれています。
このようにしてAPIの使い方を確認することができます。

実装

それでは、実際に実装を進めていきます。

Guzzleインストール

カレントディレクトリに移動して、Guzzleをインストールします。

composer require guzzlehttp/guzzle
コントローラを作成&ルーティング設定

コントローラも作成しておきます。

$ php artisan make:controller WeatherContoroller

web.phpにルーティングを設定します。

<?php

Route::get('/', [WeatherController::class, 'index']);

コントローラー修正

コントローラーを実装していきます。 都市名(東京)と取得したAPI Keyをパラメータに指定します。

<?php

namespace App\Http\Controllers;

use GuzzleHttp\Client;

class WeatherController extends Controller
{
    public function index() {
        
        $cityName = 'Tokyo';
        $apiKey = '取得したAPI Key';
        $url = "http://api.openweathermap.org/data/2.5/forecast?units=metric&lang=ja&q=$cityName&appid=$apiKey";
       
        $method = "GET";

        $client = new Client();

        $response = $client->request($method, $url);

        $data = $response->getBody();
        $data = json_decode($data, true);
        
        return response()->json($data);
    }
}

APIをたたく

localhostにアクセスしてみると天気予報の結果が返ってきます。 f:id:teco_abe:20211216130429p:plain 以上がAPIの使い方になります。

おまけ

先ほどの結果では天気予報の結果が見にくいので、いくつかの天気予報の項目を選び簡単にviewに表示してみた結果も記載しておきます。
表示したい項目を選ぶことで自分の好みに合わせて天気予報の情報を取得することができます。 f:id:teco_abe:20211216131139p:plain

まとめ

今回は天気予報を例にAPIの使い方を紹介しました。
APIはたくさんの種類があるので使ってみたいものを探し、自分のサービスを開発してみるのも面白いと思います。
ここまでご覧いただきありがとうございました。

www.tecotec.co.jp