Vue 3 + Composition API + useAxiosで動的なAPIリクエストを実現する方法
この記事では、Vue 3のComposition APIと@vueuse/integrations
のuseAxios
を使用して、動的なURLやパラメーターでAPIリクエストを行う方法を紹介します。特にexecute
メソッドを使った柔軟なリクエストの実装方法に注目します。
準備
まず、VueUseからuseAxios
をインポートします。これにより、AxiosをVueのComposition APIと統合して、簡単にHTTPリクエストを管理できるようになります。
# VueUseのインストール(まだインストールしていない場合)
npm install @vueuse/core
npm install axios
実装方法
以下のコードでは、script setup
を使って、ユーザーが入力したURLやパラメーターでリクエストを動的に実行できるようにしています。
useAxios
の設定とexecute
メソッドの使用
1. まずは、useAxios
のセットアップを行います。immediate: false
を指定することで、インスタンス作成時の自動リクエストを防ぎ、必要なときにexecute
を呼び出してリクエストを実行します。
<script setup lang="ts">
import { ref } from 'vue';
import { useAxios } from '@vueuse/integrations/useAxios';
// 動的に変更するURLとパラメーター用のrefを定義
const inputUrl = ref<string>('/api/default-endpoint');
const inputParam = ref<string>('');
// useAxiosのセットアップ
const { execute, data, isFinished, loading, error } = useAxios(undefined, { method: 'GET' }, { immediate: false });
// リクエストを実行する関数
const fetchData = () => {
execute(inputUrl.value, {
params: { query: inputParam.value }
});
};
</script>
-
inputUrl
とinputParam
: URLとパラメーターを動的に管理するためのrefです。 -
execute
: ここでURLとパラメーターを渡してリクエストを実行します。execute
に渡す値を変更することで、異なるエンドポイントやパラメーターでリクエストが可能です。 -
immediate: false
: インスタンス作成時にリクエストが実行されるのを防ぎます。
2. テンプレートでリクエストをコントロール
以下のテンプレートコードでは、ユーザーが入力したURLやパラメーターを使ってAPIリクエストを実行し、その結果を表示しています。
<template>
<div>
<input v-model="inputUrl" placeholder="Enter URL" />
<input v-model="inputParam" placeholder="Enter Query Parameter" />
<button @click="fetchData">Fetch Data</button>
<div v-if="loading">Loading...</div>
<div v-if="error">Error: {{ error.message }}</div>
<div v-if="isFinished && data">
<h3>Fetched Data:</h3>
<pre>{{ data }}</pre>
</div>
</div>
</template>
- URL入力フィールド: 動的にリクエストするURLを指定できます。
- パラメーター入力フィールド: クエリパラメーターを動的に設定できます。
-
実行ボタン: ボタンをクリックすると
fetchData
関数が呼ばれ、入力内容に基づいてリクエストが実行されます。 -
結果の表示:
data
、loading
、error
、isFinished
などを使用して、リクエストの状態や結果をUIに表示しています。
ポイント解説
-
immediate: false
の利用
immediate: false
オプションを使用することで、最初のリクエストを自動実行せず、execute
で制御します。必要なときだけリクエストを発行できるため、ユーザーが入力したURLやパラメーターを使用してリクエストを動的に変更できます。 -
execute
メソッドによる動的リクエスト
execute
メソッドを使うと、動的にリクエストのURLやパラメーターを指定できます。例えば、URLやパラメーターをリアルタイムで変更して、新しいリクエストを実行することが可能です。 -
レスポンスの状態管理
data
、loading
、error
、isFinished
を活用し、リクエストの状態をUIに反映することで、ユーザーにわかりやすいインターフェースを提供します。
まとめ
この実装では、useAxios
のexecute
メソッドを活用することで、ユーザー入力に応じた動的なAPIリクエストが可能になります。immediate: false
とexecute
を組み合わせることで、柔軟かつ効率的にリクエストを制御できるため、さまざまなAPIインタラクションに対応できます。
この方法を使うことで、Vue 3とAxiosを活用した高度なAPIリクエスト機能を容易に実装できるようになります。
Discussion