ホームページ > ウェブフロントエンド > Vue.js > Vue3 Axios インターセプターをリクエスト ファイルにカプセル化する方法

Vue3 Axios インターセプターをリクエスト ファイルにカプセル化する方法

王林
リリース: 2023-05-19 11:49:44
転載
1327 人が閲覧しました

1. request.js という名前の新しいファイルを作成し、Axios にインポートします:

import axios from 'axios';
ログイン後にコピー

2. request という名前の関数を作成し、エクスポートします:

Create a 関数は request と呼ばれます。そして、ベース URL を持つ新しい Axios インスタンスに設定されます。ラップされた Axios インスタンスでタイムアウトを設定するには、Axios インスタンスの作成時にタイムアウト オプションを渡します。

export const request = axios.create({
  baseURL: 'https://example.com/api',
  timeout: 5000, // 超时设置为5秒
});
ログイン後にコピー

3. リクエスト関数にインターセプタを追加します:

request.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

request.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response;
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error);
});
ログイン後にコピー

これにより、リクエスト インターセプタとレスポンス インターセプタが追加されます。これらのインターセプターでは、要求が送信される前に認証ヘッダーを追加したり、応答が返された後に応答データにエラーがないかチェックしたりするなど、必要なアクションを実行できます。

4. 最後に、リクエスト関数をエクスポートします:

export default request;
ログイン後にコピー

これで、事前定義されたインターセプタを通過するすべてのネットワーク リクエストは、アプリケーションのリクエスト関数を通じて実行できるようになります。例:

import request from './request';

request.get('/users')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });
ログイン後にコピー

これは、ラップされた Axios インスタンスを使用して GET リクエストを作成し、事前定義されたインターセプターを使用して応答を処理します。

完全な例:

送信前に送信されます。リクエスト トークンとユーザー名。リクエスト インターセプターを使用して、すべてのリクエストに認証ヘッダーを追加できます。

リクエスト インターセプターは、「token」と「username」という名前の値が localStorage に存在するかどうかを確認し、それらを Authorization として追加します。ユーザー名ヘッダー。必要に応じて、これらのヘッダーの名前と値を調整します。

応答データを操作するには、応答インターセプターを使用します。上記の例では、応答インターセプターは、応答データの「ステータス」属性が「成功」であるかどうかを検証します。そうでない場合は、エラーとして処理し、例外としてスローします。応答オブジェクトには、応答ヘッダー、ステータス コード、応答本文などのすべての情報を含む例外情報が含まれます。これらのチェックと例外スローのロジックは、実際の状況に応じて調整できます。

rree

以上がVue3 Axios インターセプターをリクエスト ファイルにカプセル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート