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のインストールと設定のチュートリアル

推薦する

Linux lsof コマンドの使用方法の詳細な説明

lsof (開いているファイルのリスト) は、プロセスによって開かれたファイルを表示するツールです。...

MySQL 匿名ログインでデータベースを作成できない問題の解決方法

よくある質問ユーザー ''@'localhost' によるデータベー...

MySQL DISTINCTの基本実装原理の詳細な説明

序文DISTINCT は、GROUP BY 操作の実装と非常によく似ていますが、GROUP BY の...

Tomcat が IDEA のコンソールで文字化けを起こし、IDEA エンコーディングを UTF-8 に設定する方法

1. まず、TomcatログのエンコーディングとIdeaログ表示コンソールのエンコーディングを区別す...

Linux で g++ を使用してプログラムをコンパイルする際の -I (大文字の i)、-L (大文字の l)、-l (小文字の l) の機能の詳細な説明

初心者の Linux ユーザーとして、私は単純なgcc/g++操作を何度も使用してきましたが、少し複...

LinuxにPHP7をインストールする方法の詳細な説明

Linux に PHP7 をインストールするにはどうすればいいですか? 1. 依存パッケージをインス...

MySQL 8.0.16 winx64 のインストールと設定方法のグラフィックチュートリアル (win10 の場合)

この記事では、MySQL 8.0.16 winx64のインストールと設定の具体的な方法を記載します。...

MySQL コマンドライン操作中のエンコードの問題の詳細な説明

1. MySQLデータベースのエンコーディングを確認する mysql -u ユーザー名 -p パスワ...

Docker クロスホストネットワーク (オーバーレイ) の実装

1. Dockerのホスト間通信Docker クロスホスト ネットワーク ソリューションには以下が含...

CentOs7 64 ビット MySQL 5.6.40 ソースコードのインストール プロセス

1. インストールプロセス中に問題が発生しないように、まず依存パッケージをインストールします。 [r...

WeChatアプレットがSMSログインを実装

目次1. インターフェース効果のプレビュー2.uViewのインストール3.uViewの設定3.1 m...

異なるブラウザ間で互換性のあるテキスト配置を実現する CSS

フォームのフロントエンド レイアウトでは、テキスト ボックスのプロンプト テキストを両端に揃える必要...

JavaScript ドキュメント オブジェクト モデル DOM

目次1. JavaScriptはページ内のすべてのHTML要素を変更できる1. IDでHTML要素を...

MySQL ロックの知識ポイントのまとめ

ロックの概念①. 現実世界では、鍵は外の世界から身を隠したいときに使う道具です。 ②. コンピュータ...