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


mac環境にnodebrew経由でNode.jsをインストールしてバージョンを管理する方法
GUIコンパイラのPreprosを使ってSassのコンパイルを行う
Vue.jsで値段を表示するときに3桁ごとにカンマを入れる方法
WordPressでbloginfo()の一部パラメーターの廃止・非推奨に注意!
EJSのincludeで別ファイルを読み込むときの画像パスを指定する方法
JavaScriptのforEach内で「continue」や「break」のような動作をさせる方法
Google Maps APIでピンをクリックしたときに吹き出しを表示する方法
Nuxt.jsでVuexストア連携を行う方法|Nuxt.jsの基本
JavaScriptのtest関数と正規表現でバリデーションチェックを行う
webpackでTop-Level Awaitを使用して、一番上位でもawaitを使えるようにする方法
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
操作に没頭できる!Firefox版 Arcのようなブラウザ「Zen Browser」
chezmoi(シェモア)で始めるdotfiles管理
GitHubの通知を見逃さない!通知に特化したアプリ「Gitify」
Keyboard Maestroの変数基礎
Neovimを使い始める最初の一歩として便利な「LazyVim」
ウェブサイトをmacOSアプリとしてラッピングする「Unite Pro」
Keyboard Maestroの「Macro Debugger」で複雑なマクロのデバッグを行う方法
無料版でも高機能なランチャーアプリ「Raycast」の基本機能と環境設定
OnyXでターミナルを使わずにmacOSの詳細設定を行う
軽量で高速なターミナルエミュレーター「Ghostty」の設定方法