Vue で Axios カプセル化を使用するための完全なチュートリアル

Vue で Axios カプセル化を使用するための完全なチュートリアル

序文

現在、プロジェクトでは、Axios ライブラリが HTTP インターフェース リクエストによく使用されています。これは、ブラウザと node.js で実行できる promise ベースの http ライブラリです。さらに、リクエストとレスポンスのインターセプト、JSON データの変換、XSRF に対するクライアント側の防御などの優れた機能も備えています。

実際にさまざまなプロジェクトで使用する場合、記述方法がわかりにくく、一貫性がないことが考えられます。 Axios は、コードを簡素化し、後からの更新やメンテナンスを容易にして、可能な限り汎用化するために、一般化された方法でカプセル化されています。

方法は次のとおりです

1. Vueにaxiosをインストールする

	npm インストール axios -S
	またはnpm i axios -S

2. main.jsでグローバルインポートする

	'axios' から axios をインポートします
	Vue.prototype.$axios = axios //Vueのプロトタイプにaxiosをバインドする

3. ルートディレクトリのvue.config.jsでクロスドメインを設定する

	モジュール.エクスポート = {
	 パブリックパス: './',
	 //クロスドメインリクエストを構成する devServer: {
	  open: true, //ブラウザを自動的に開くかどうか https: false, //httpsを有効にするかどうか
	  hotOnly: 偽、
	  proxy: { // クロスドメインを構成する '/api': {
	    target: 'http://********', //リクエストインターフェースドメイン名 ws: true,
	    安全: 偽、
	    changOrigin: true, // パスの横断を許可するかどうかRewrite: {
	     '^/api': ''
	    }
	   }
	  },
	  以前: app => { }
	 }
	}

4. srcサブディレクトリの下のapiフォルダにapi.jsファイルを作成し、axiosを単純にカプセル化します。

'axios' から axios をインポートします
//ここでは要素の読み込みを参照します。全画面読み込み。import { Loading } from "element-ui";

constサービス = axios.create({
 ベースURL: '/',
 timeout: 30000 // リクエストのタイムアウトを設定する})
読み込み = "";
// リクエストインターセプター service.interceptors.request.use(
 (設定) => {
  // リクエストが送信される前に何らかの処理を行う if (!(config.headers['Content-Type'])) {
   読み込み = Loading.service({
    ロック: 真、
    テキスト: "読み込み中...",
    スピナー: "el-icon-loading",
    背景: "rgba(255,255,255,0.7)",
    カスタムクラス: "リクエスト読み込み",
   });
   config.method == 'post'の場合{
    config.headers['コンテンツタイプ'] =
     'アプリケーション/json;文字セット=UTF-8'
    for (config.data内のvarキー) {
     if (config.data[キー] === '') {
      config.data[キー]を削除する
     }
    }
    config.data = JSON.stringify(config.data)
   } それ以外 {
    config.headers['コンテンツタイプ'] =
     'application/x-www-form-urlencoded;charset=UTF-8'
    config.data = JSON.stringify(config.data)
   }
  }
  const トークン = "トークン"
  // 各リクエストにトークンを持たせます。['X-Token'] はカスタムキーです。実際の状況に応じて変更してください。if (token) {
   config.headers['Authorization'] = トークン
  }
  設定を返す
 },
 (エラー) => {
  読み込み中。閉じる();
  // 送信失敗 console.log(error)
  Promise.reject(error) を返します。
 }
)

// レスポンスインターセプター service.interceptors.response.use(
 (応答) => {

  読み込み中。閉じる();
  // dataAxios は axios によって返されるデータです
  // ロードインスタンスを閉じる();
  定数 dataAxios = レスポンス.data
  // このステータスコードは、バックエンドと合意したデータAxiosの戻り値です
 },
 (エラー) => {
  Promise.reject(error) を返します。
 }
)

	デフォルト サービスをエクスポートする

5. apiフォルダにhttpファイルを作成する

 // パッケージ化されたaxiosをインポートする
 // ps: カプセル化されていない場合は、axios を "./api" からインポートできます。
	// /api はクロスドメインを構成するためのパス変数です。let reportUpload= '/api/report/upload'
  エクスポートconstアップロード= () => {
   axios.get( reportUpload ) を返します。
  }

6. ページ内のインターフェースを呼び出す

// カプセル化されたインターフェースを導入します import { Upload} from "@/api/http.js"; 

// async Upload() を使用して呼び出す {
  let { 結果 } = getlist() を待機します。
  	console.log(結果)
 },

要約する

これで、vue での axios カプセル化の使用に関するこの記事は終了です。vue axios カプセル化に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • データインタラクションにVue-axiosを使用する方法
  • Vue プロジェクト実践 axios のエレガントな使用
  • Vue プロジェクトで axios リクエストを使用する方法
  • Vue での axios 操作のグローバル使用
  • Vue での axios の使用に関する詳細な説明

<<:  WordPress実験を実装するための3つの仮想マシンのKVM展開の詳細説明

>>:  bitronix を使用して MySQL に接続するときの MySQLSyntaxErrorException の解決方法

推薦する

HTML テーブルの空白セル補完を実装する方法

私が初めて Web 開発を独学で学んだ頃は、いわゆる DIV/CSS レイアウトはなく、テーブル レ...

Vue ページ内の公開マルチタイプ添付画像アップロード領域と適用可能な折りたたみパネル (サンプルコード)

フロントエンド プロジェクトでは、添付ファイルのアップロードは非常に一般的な機能であり、ほぼすべての...

Docker構成 Alibaba Cloud Container Serviceの操作

Alibaba Cloud Dockerコンテナサービスの設定Alibaba Cloud Image...

Linux で開いているファイルが多すぎる問題を解決する方法

原因は、プロセスが特定の時点でシステム制限を超える数のファイルと通信リンクを開くことです。 システム...

CSS transform-originプロパティを理解する

序文最近、花火アニメーションを作成しました。花火が散るアニメーションです。アニメーションの実装中、花...

要素の円弧モーションを実現する CSS3 サンプルコード

CSS を使用して要素の円弧の動きを制御する方法CSS3 の新しい属性 transfrom トランジ...

Linux 7.6 バイナリに MySQL 8.0.27 をインストールする詳細な手順

目次1. 環境整備1.1 オペレーティング システムのバージョン1.2 ディスク容量1.3 ファイア...

1 つの記事で React における Redux の初期の使用を理解する

Redux はデータ状態管理プラグインです。React や Vue を使用してコンポーネント化された...

MySQL の集計関数 count の使用法とパフォーマンスの最適化テクニック

この記事の環境はWindows 10、MySQLのバージョンは5.7.12-logです1. 基本的な...

mysql8.0.23 Linux (centos7) のインストールの完全かつ詳細なチュートリアル

目次リレーショナルデータベースとは何ですか?非リレーショナルデータベースとは何ですか? MySQL ...

リンクをクリックしたときに表示される点線のボックスを削除するいくつかの方法

削除する方法はいくつかあります:リンクを直接追加するonfocus="this.blur(...

Linuxのファイルとフォルダの権限を操作する方法

Linux のファイル権限まず、現在のディレクトリ内のファイルの内容を確認しましょう。 ls -l ...

JS はシンプルな todoList (メモ帳) 効果を実装します

メモ帳プログラムは、HTML + CSS + JavaScript の 3 つの主要なフロントエンド...

NavicatがMySQL8.0.11に接続するとエラー2059が発生する

間違いNavicat Premium を使用して MySQL に接続すると、次のエラーが発生します。...

Dockerコンテナ内にkibanaトークナイザーをインストールする方法

ステップ: 1. 仮想マシンディレクトリに新しいdocker-compose.ymlファイルを作成し...