Vue で Axios 非同期リクエスト API を使用する方法

Vue で Axios 非同期リクエスト API を使用する方法

基本的なHTTPリクエストの設定

まず、ターミナルで次のコマンドを実行して、Axios をプロジェクトにインストールします。

axiosnpm をインストールする axios をインストールする

次に、次のように Vue コンポーネントに axios をインポートします。

//App.view - axios をインポートする
<スクリプト>
'axios' から axios をインポートします

エクスポートデフォルト{
  設定 () {

    }
}
</スクリプト>

次に、axios.get を使用して、Kanye の REST API の URL からランダムな引用を取得します。次に、Promise.then を使用して、リクエストが応答を返すのを待機できます。

//App.vue - HTTPリクエストを送信する
<スクリプト>
'axios' から axios をインポートします

エクスポートデフォルト{
  設定 () {
     axios.get('https://api.kanye.rest/').then(レスポンス => {
        // 応答を処理する
     })
  }
}
</スクリプト>

API から応答を取得できるようになったので、その意味を見てみましょう。それを quote という名前の引用として保存します。

//App.vue - レスポンスの保存
<スクリプト>
'axios' から axios をインポートします
'vue' から { ref } をインポートします

エクスポートデフォルト{
  設定 () {
     axios.get('https://api.kanye.rest/').then(レスポンス => {
        // 応答を処理する
        quote.value = 応答
     })
     戻る {
      引用
     }
  }
}
</スクリプト>

最後にテンプレートに出力し、斜体と引用符で表示します。また、引用元を追加する必要があります。

//App.vue - テンプレートコード
<テンプレート>
  <div>
    <i>「{{ 引用 }}」</i>
    - カニエ・ウェスト
  </div>
</テンプレート>

ブラウザでコンテンツを確認してください。

リクエストの応答コードなどの追加情報とともに、ランダムな Kanye の引用が返されていることがわかります。

この小さなアプリケーションでは、data.quote 値のみに関心があるため、レスポンスのどのプロパティにアクセスするかをスクリプトで指定する必要があります。

//App.vue - 見積もりの​​み取得
axios.get('https://api.kanye.rest/').then(レスポンス => {
        // 応答を処理する
        quote.value = レスポンスデータ.quote
})

上記のコードで、必要なものが得られます。

async/await を使用した Axios

Vue プログラムでは、Axios と async/await モードを組み合わせることができます。

セットアップ プロセスでは、まず現在の GET コードをコメント アウトし、次に loadQuote という非同期メソッドを作成します。内部的には、同じ axios.get メソッドを使用できますが、非同期で完了するまで待機し、結果を response という定数に保存します。

次に引用の値を設定します。

//App.vue - 非同期 Axios
const loadQuote = 非同期() => {
      const レスポンス = KanyeAPI.getQuote() を待機
      quote.value = レスポンスデータ.quote
}

前のコードとまったく同じように動作しますが、今回は非同期パターンを使用します。

Axios によるエラー処理

async-await パターンでは、try と catch を使用して API 呼び出しにエラー処理を追加できます。

//async/await によるエラー処理
試す {
        const レスポンス = KanyeAPI.getQuote() を待機
        quote.value = レスポンスデータ.quote
} キャッチ (エラー) {
        コンソール.log(エラー)
}

生の promise 構文を使用する場合は、API 呼び出しの後に .catch を追加して、リクエストからのエラーをキャッチできます。

//Promise によるエラー処理
api.kanye.rest の取得
      .then(応答 => {
        // 応答を処理する
        quote.value = レスポンスデータ.quote
      }).catch(エラー => {
      コンソール.log(エラー)
})

POSTリクエストの送信

POST リクエストを送信する方法を見てみましょう。ここでは、JSONPlaceholder を使用して API 呼び出しをモックします。

ドキュメントには、POST リクエストをテストするための /posts エンドポイントが提供されています。

次に、クリックすると API 呼び出しがトリガーされるボタンを作成する必要があります。テンプレート内に「Create Post」という名前のボタンを作成し、クリックすると createPost というメソッドを呼び出します。

  <div>
    <i>「{{ 引用 }}」</i>
    - カニエ・ウェスト
    <p>
      <button @click="createPost">投稿を作成</button>
    </p>
  </div>
</テンプレート>

次に、コード内に createPost メソッドを作成し、それをセットアップから返します。

この方法は、前の GET リクエストに似ています。axios.post を呼び出して URL (つまり https://jsonplaceholder.typicode.com/posts) を渡すだけで、ドキュメントにデータをコピーして貼り付けることができます。

//アプリ.vue
定数createPost = () => {
      axios.post('https://jsonplaceholder.typicode.com/posts', JSON.stringify({
          タイトル: 'foo',
          本文: 'バー',
          ユーザーID: 1,
      }))。その後(応答 => {
        console.log(応答)
      })
}

ボタンをクリックして試してみましょう。コンソールに多くの情報が出力され、POST リクエストが正常に完了したことが分かります。

Axios で再利用可能な API 呼び出しを書く

プロジェクトに src/services ディレクトリを作成し、それを使用してすべての API 呼び出しを整理します。

ディレクトリには 2 種類のファイルが含まれています。

  • API.js: すべてのルートで使用される定義済みのbaseURLを持つAxiosインスタンスを作成するために使用されます。
  • *{特定の機能}*API.js: API呼び出しを再利用可能なモジュールに整理するために使用できる、より具体的なファイル

これの利点は、コードを少し変更するだけで、開発サーバーと本番サーバーを簡単に切り替えることができることです。

services/API.js ファイルを作成し、Axios の baseURL を Kanye REST API のデフォルトに設定します。

API.js は 'axios' から axios をインポートします

エクスポートデフォルト(url='https://api.kanye.rest') => {
    axios.create({ を返す
        ベースURL: URL、
    })
}

次に、KanyeAPI.js ファイルを作成し、./API から API をインポートします。ここでは、さまざまな API 呼び出しをエクスポートします。

API() を呼び出すと、.get または .post を呼び出すことができる Axios インスタンスが提供されます。

//カニエAPI.js
'./API' から API をインポートします

エクスポートデフォルト{
    引用を取得(){
        API().get('/') を返します
    },
}

次に、App.vue 内で、コンポーネントが Axios を自分で作成するのではなく、再利用可能な API 呼び出しを通じてこの新しいファイルを使用できるようにします。

//アプリ.vue
const loadQuote = 非同期() => {
      試す {
        const response = await KanyeAPI.getQuote() // <--- この行
        quote.value = レスポンスデータ.quote
      } キャッチ (エラー) {
        コンソール.log(エラー)
      }
}

次に、createPost を独自の再利用可能なメソッドに移動します。

KanyeAPI.js に戻り、エクスポートのデフォルトに createPost を追加します。これにより、POST リクエストのデータが HTTP リクエストのパラメータとして渡されます。

GET リクエストと同様に、API を介して axios インスタンスを取得しますが、今回はデフォルトの URL 値をオーバーライドし、JSONplaceholder URL を渡す必要があります。その後、通常どおり Axios POST を使用できます。

//カニエAPI.js
エクスポートデフォルト{
    引用を取得(){
        API().get('/') を返します
    },
    ポストデータを作成します。
        API('https://jsonplaceholder.typicode.com/').post('/posts', data) を返します。
    }
}

とてもシンプル

App.vue に戻ると、次のように新しい post メソッドを呼び出すことができます。

//アプリ.vue
 定数createPost = () => {
      const レスポンス = KanyeAPI.createPost(JSON.stringify({
          タイトル: 'foo',
          本文: 'バー',
          ユーザーID: 1,
      }))

      console.log(応答)
}

ボタンをクリックすると、専用 API が正常に動作していることがわかります。

API 呼び出しをこれらの Vue コンポーネントから独自のファイルに移動することの利点は、これらの API 呼び出しをアプリケーション全体のどこでも使用できることです。これにより、より再利用性とスケーラビリティに優れたコードが作成されます。

最終コード

// アプリ.vue
<テンプレート>
  <div>
    <i>「{{ 引用 }}」</i>
    - カニエ・ウェスト
    <p>
      <button @click="createPost">投稿を作成</button>
    </p>
  </div>
</テンプレート>

<スクリプト>
'axios' から axios をインポートします
'vue' から { ref } をインポートします
'./services/KanyeAPI' から KanyeAPI をインポートします
エクスポートデフォルト{
  設定 () {

    const 引用 = ref('')

    const loadQuote = 非同期() => {
      試す {
        const レスポンス = KanyeAPI.getQuote() を待機
        quote.value = レスポンスデータ.quote
      } キャッチ (エラー) {
        コンソール.log(エラー)
      }
    }

    引用を読み込む()

        // axios.get('https://api.kanye.rest/')
    // .then(レスポンス => {
    // // 応答を処理する
    // quote.value = response.data.quote
    // }).catch(エラー => {
    // コンソール.log(エラー)
    // })

    定数createPost = () => {
      const レスポンス = KanyeAPI.createPost(JSON.stringify({
          タイトル: 'foo',
          本文: 'バー',
          ユーザーID: 1,
      }))

      console.log(応答)
      // axios.post('https://jsonplaceholder.typicode.com/posts', JSON.stringify({
      // タイトル: 'foo',
      // 本体: 'バー',
      // ユーザーID: 1,
      // })).then(レスポンス => {
      // console.log(応答)
      // })

          }

        戻る {
      投稿を作成、
      引用
    }
  }
}
</スクリプト>

<スタイル>
#アプリ {
  フォントファミリー: Avenir、Helvetica、Arial、sans-serif;
  -webkit-font-smoothing: アンチエイリアス;
  -moz-osx-font-smoothing: グレースケール;
  テキスト配置: 中央;
  色: #2c3e50;
  上マージン: 60px;
}
</スタイル>
//API.js
'axios' から axios をインポートします

エクスポートデフォルト(url='https://api.kanye.rest') => {
    axios.create({ を返す
        ベースURL: URL、
    })
}
//カニエAPI.js
'./API' から API をインポートします
エクスポートデフォルト{
    引用を取得(){
        API().get('/') を返します
    },
    ポストデータを作成します。
        API('https://jsonplaceholder.typicode.com/').post('/posts', data) を返します。
    }
}

上記は、Vue で Axios 非同期リクエスト API を使用する方法の詳細です。Vue で Axios 非同期リクエスト API を使用する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • vue-cli は、モックシミュレーションデータを返すための非同期リクエストを実装します。
  • Vue 非同期リクエストデータの再レンダリング方法
  • 非同期リクエストを開始するvue-resourceメソッド
  • Vue での Promise の使用と非同期でデータを要求する方法
  • Vue フォームのフォーム送信 + Ajax 非同期リクエスト + ページング効果
  • Vueで非同期リクエストを行う方法

<<:  Nginx でアクセス頻度、ダウンロード速度、同時接続数を制限する方法

>>:  Windows10でのMySQL 5.7.21のインストールと設定のチュートリアル

推薦する

nginx で仮想ホストを構成するための詳細な手順

仮想ホストは、インターネット上で実行されているサーバー ホストを複数の「仮想」ホストに分割する特殊な...

Ubuntu 20.04 に cuda10.1 をインストールする手順 (グラフィック チュートリアル)

インストール前の準備CUDA の主な目的はディープラーニングであり、現在主流のディープラーニングフレ...

Ubuntu の起動後にアプリケーションを実行するためのターミナルの設定方法

1.メニューバーにスタートと入力し、スタートアップアプリケーションをクリックして入力します。 2. ...

Linux ファイル記述子、ファイルポインタ、および inode の詳細

目次Linux - ファイル記述子、ファイルポインタ、インデックスノード1. Linux - ファイ...

Centos7 環境でバイナリ インストール パッケージから mysql5.6 をインストールする方法の詳細な説明

この記事では、centos7 環境でバイナリ インストール パッケージを使用して mysql5.6 ...

検索履歴を実装するjQueryプラグイン

毎日jQueryプラグイン - 検索履歴を作成するためのものです。参考までに、具体的な内容は次のとお...

Vue3 を使用して虫眼鏡効果を実現する方法の例

目次序文1. カプセル化の重要性2. どのようにカプセル化しますか? 1. 準備2. 梱包を開始する...

DockerはRedisをインストールし、操作用のビジュアルクライアントを導入します

1 はじめにRedis 、 ANSI C言語で開発されたKey-Valueベースの高性能NoSQLデ...

jQuery カスタム虫眼鏡効果

この記事の例では、jQueryのカスタム虫眼鏡効果の具体的なコードを参考までに共有しています。具体的...

操作タイムアウトがないときにMySQLサーバーがアクティブに切断される問題を解決します

MySQL サービスを使用する場合、通常の状況では、MySQL のタイムアウト設定は 8 時間 (2...

ウェブデザイン経験

<br />著者はかつてWebデザインの初心者でしたが、継続的な探求と実践を通じて、今で...

MySQL の NULL 値に関する体験談と分析チュートリアルシリーズ

目次1. テストデータ2. ヌル値による不便3. スペース、空の値、null をどのように判断すれば...

MySQL の CPU 負荷が高い問題のトラブルシューティング

MySQL による CPU 負荷の上昇今日の午後、MySQL によってサーバーの負荷が高くなる問題を...

Docker で複数の MySQL コンテナを作成して実行する方法の例

1. mysql/mysql-server:latestイメージを使用してMySQLインスタンスを素...

dockerにros2をインストールするための詳細な手順

目次メイントピック1. UbuntuにDockerをインストールする2. DockerにROS2-F...