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

推薦する

シンプルなデータ応答システムを実装する

目次1. デップ2. 観察者を理解する3. 監視と観察者を理解する4. トリガーの依存性5. プロセ...

Linux サービス管理の 2 つの方法、service と systemctl の詳細な説明

1.サービスコマンドサービスコマンドは実際には/etc/init.dディレクトリに移動し、関連プログ...

CSS メニューボタンアニメーション

ドロップダウンメニューを書くには、ボタンをクリックします。メニューの入り口はアイコンボタンをクリック...

Windowsにmysql5.7をインストールする方法

まずmysqlの圧縮バージョンをダウンロードします。公式ダウンロードアドレスは123WORDPRES...

ウェブページからテキスト透かしを削除する2つの簡単な方法

<br /> 特定の Web サイトを閲覧して、優れた Web ページを見つけた場合、そ...

jsを使用して簡単な抽選機能を実現する

この記事では、参考までに、簡単な抽選機能を実装するためのjsの具体的なコードを共有します。具体的な内...

CSSのclip-pathプロパティを使用して不規則なグラフィックを表示する

clip-path CSS プロパティはクリッピングを使用して要素の表示可能領域を作成します。領域内...

MySQL の主キーとトランザクションの詳細な説明

目次1. MySQLの主キーとテーブルフィールドに関するコメント1. 主キーと自動増分2. テーブル...

HTMLページ内の検索機能を完了する

最近、たくさんの人に改変してもらったフレームワークに取り組んでいます。毎日コードを見ていると目が回り...

Linux で圧縮ファイルの内容を表示する 10 の方法 (要約)

一般的に、アーカイブされたファイルや圧縮されたファイルの内容を表示するには、まず解凍してから表示する...

MySQLはパスワードなしでログインする例を実装しています

具体的な方法:ステップ1: mysqlサービスを停止する /etc/init.d/mysqld を停...

CSS で overflow-y: visible; が機能しない理由の分析と解決

シナリオ最近の要件は、モバイル デバイス用の h5 ページです。これには、選択可能なカードの行が必要...

新しいウィンドウで開くジャンプメニュー、window.open の使い方の紹介

コードをコピーコードは次のとおりです。 <前> <div> <sele...

Linux システムで TCP 接続を作成するプロセスの紹介

目次LinuxでTCPを作成する手順サーバクライアントTCP確立プロセスサンプルコードLinuxでT...

Vueコンポーネントのルーティング強調表示問題の解決策

序文以前は、キャッシュを使用してルートを強調表示していました。すべてのルートをトラバースし、クリック...