Next.jsでAPI連携してみよう

FRONT END

LiSMOtechの小谷です。前回作成したNext.jsのチュートリアルを使ってAPI連携してみましょう。

 

今回は使用するAPIは気象庁が提供するもので、天気予報データを返してくれます。

提供して頂いているのは気象庁らしいですが、大々的におしているわけではないようで、レスポンシブのデータの解説などはあまり分からないですね。。。

 

ですが、登録不要ですぐ呼べるので、今回はテストとしてこちらを使用しようと思います。

 

SWRのインストール

SWRReactHooksのデータ取得用のライブラリです。

Next.jsの開発企業がこのSWRを開発したようです。SWRを使わなくてもAPI連携はできると思いますが、ついでに使ってみます。

 

早速以下のコマンドでインストールします。

npm install swr

API呼び出し

Next.jsではpages\apiの中にあるものは/api/××とマッピングされ、呼び出すことが出来るようです。

 

まず、pages\apiの中に適当なファイルを作成します。weather.jsというものを作成しました。

中身は初めにあったhello.jsを参考に以下のようにしました。

export default async function handler(req, res) {
  // URLの130000は東京を表しているらしいです
  const respose = await fetch('https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json');  
  const data = await respose.json();

  res.status(200).json({ data })
}

次に、呼びたいファイルで次のように書きました。

import useSWR from 'swr'

function fetcher(url) {
  return fetch(url).then(r => r.json());
}

export default function ××() {
  const { data, error } = useSWR("/api/weather", fetcher);
  if (error) console.log(error)
  if (data) console.log(data)

  return (

    // 省略

  )

}

SWRを使うとthenやcatchなどを省略して簡潔に書けていいかもですね。

 

これでコンソールログを確認すると、以下のようにデータが出ていると思います。

今回はSWRを使った箇所でfetcherを書きましたが、これは省略出来たりとかもするみたいです。

まとめ

Next.jsでAPI連携をしてみました。簡単に連携の実装できるのでよいですね!

また、今回使用したSWRは簡潔にAPIのデータ取得を書けるだけでなく、他にもReduxなしで状態管理も出来たり、気の利いたオプションなどあったり使い勝手がよさそうです。

最新記事

CONTACT

     

制作に関するご相談やご質問、お見積りなどお気軽にお問い合わせください

平日10:00〜19:00

お電話の場合こちらから

043-305-4162

平日10:00〜19:00