Nuxt.jsでaxios-moduleを使ってAPIからデータを取得・表示する|Nuxt.jsの基本

Nuxt.jsでAPIと連携してデータを取得する方法はいくつかありますが、今回は「axios-module」というモジュールを使用します。
axios-module
axios-moduleは、HTTPリクエストを簡単にするための「axios」をさらに便利に扱うためのモジュールです。
axios自体は過去に記事にしたことがあるので、そちらもご覧ください(Nuxt.jsに限らず、純粋なJavaScriptの使用例になります)。
Nuxt.jsへの導入方法
Nuxt.jsでaxiosを使用する場合は「nuxt-community」から公開されているNuxt.js用のパッケージがあるので、こちらをインストールします。
$npm install -D @nuxtjs/axios$yarn add @nuxtjs/axiosインストールができたら、nuxt.config.jsを開きます。
このファイルがNuxt.jsの設定ファイルで、インストールしたモジュールを読み込むように設定します。
modulesという項目があるので、その配列内に'@nuxtjs/axios'を追加します。
module.exports = {
// 省略 //
modules: [
'@nuxtjs/axios'
],
// 省略 //
}これでNuxt.js内でaxiosが使えるようになりました。
axios-moduleの使用
asyncDataで読み込み
Nuxt.jsの独自メソッドに「asyncData」があります。
これはページコンポーネントがロードされる前に実行されるメソッドで、SSR(サーバーサイドレンダリング)するためのものです。
createdやmountedだと、ページコンポーネントがロードされた後に実行されてしまうので、基本はasyncData内でaxiosを使ってAPIのロードを行います。
下記はJSONPlaceholderというAPIを実際に取得するときのサンプルコードです。
<script>
export default {
async asyncData({ $axios }) {
const response = await $axios.get("https://jsonplaceholder.typicode.com/todos",{
params: {
userId: '1'
}
})
return {
data: response.data
}
}
}
</script>axiosの詳細な使い方
axios.get()で第一引数にAPIのエンドポイントを指定し、第二引数に渡すパラメータなどを指定します。
そして取得したデータはasyncData内でreturn{}で返して使用します。
$axios.getと$axios.$getの違い
$axios.getで取得する場合は、レスポンスが下記のようになります。
{
"data": [], // レスポンスデータ
"status": 200, // ステータスコード
"statusText": "", // ステータステキスト
"headers": {},
"config": {},
"request": {}
}実際に取得したいデータは「data」内に入っています。
$axios.$getの場合は、レスポンスデータのみが直接取得されます。
ステータスコードやステータステキストを使ってエラー時の分岐をしたりする場合は取得されないので、書き方によって違いがあると注意しておく必要があります。


Nuxt.jsでコンポーネントを作成してコードの共通化を行う|Nuxt.jsの基本
WordPressでbloginfo()の一部パラメーターの廃止・非推奨に注意!
Vue.jsでtemplateタグ内にscriptやstyleタグを生成する方法|Tags with side effect are ignored
CSSやJavaScriptでスクロールバーの横幅を取得する方法
Visual Studio Codeの基本|概要やインストールから日本語化など最低限の設定方法
コーディング時のclass名の省略はどこまでして良いのか?「img / btn / ttl / desc / thumb」
WordPressのメディアライブラリで画像を追加するときに表示される「HTTP エラー」の解消方法
Visual Studio Codeの文字サイズやタブサイズの設定方法
Visual Studio CodeでMovable TypeのMTMLファイルを開く拡張機能「Movable Type Markup Language Syntax」
gzip圧縮をしてウェブサイトの表示スピードを上げる方法
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Eagleで実現するクリエイティブ素材の簡単管理
かゆいところに手が届く「Supercharge」でMac環境を便利にカスタマイズする
超軽量なコードエディタ 「Zed」をサブエディタとして活用する
Bartender 6で追加されたWidgets機能で自作メニューバーアイテムを簡単に作成する
Googleカレンダーを便利に活用するための小技集(祝日だけを表示・月末の繰り返しイベントを追加)
Obsidianを使った「自己流PKM」で行う知識トレーニング
テキストエディタ・ノートアプリ関連のショートカットキーをKeyboard Maestroで統一する
Path Finderを使ってキーボードだけでファイル操作する方法(応用編)
macOSのコマンドパレット比較!SpotlightとAlfred、Raycastどれを使えばいい?