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の場合は、レスポンスデータのみが直接取得されます。
ステータスコードやステータステキストを使ってエラー時の分岐をしたりする場合は取得されないので、書き方によって違いがあると注意しておく必要があります。


JavaScriptで配列内から特定条件の要素を探す方法
Movable TypeでMTLoopを使ってkeyでソートしたときに、10個以上表示させると並びがおかしくなる
全角スペースを可視化してくれるVisual Studio Codeの拡張機能「zenkaku」
SourceTreeでBacklogのGitを使うときに、権限エラーになってしまう場合の解決法
ウェブ上でLaTeXで数式をキレイにプレビューするJavaScriptライブラリ「MathJax」
MAMPでローカル開発環境にWordPressをインストールする手順
Bracket Pair ColorizerでVisual Studio Codeの括弧を色分けして見やすくする
gulp 4.0から新しく加わったseriesとparallelについての備忘録
効率的なマークアップが出来るようになるEmmetでHTMLを書く時の基本
Macで.pemを使ってAmazon EC2インスタンスへSSH接続する方法
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Bartender 6で追加されたWidgets機能で自作メニューバーアイテムを簡単に作成する
Googleカレンダーを便利に活用するための小技集(祝日だけを表示・月末の繰り返しイベントを追加)
Obsidianを使った「自己流PKM」で行う知識トレーニング
テキストエディタ・ノートアプリ関連のショートカットキーをKeyboard Maestroで統一する
Path Finderを使ってキーボードだけでファイル操作する方法(応用編)
macOSのコマンドパレット比較!SpotlightとAlfred、Raycastどれを使えばいい?
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」