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 の解決方法

推薦する

editplus の Zen コーディング例コードの説明

たとえば、次のように入力します。 XML/HTML コードdiv#ページ>(div#ヘッダー&...

JavaScript の useRef と useState の紹介

目次1. useStateフック2. useRefフック3. useRef と useState 4...

なぜ Tomcat が起動できないのでしょうか?

目次現象:ポートの使用:ファイルにスペルミスがあります:現象: Tomcat がインストールされ、W...

React でインデックスをキーとして使用することが推奨されないのはなぜですか?

1. 古い仮想DOMと新しい仮想DOMを比較し、まずキーが同じかどうかを確認します。 2. 引き続...

30分でReact Hooksを包括的に理解できます

目次概要1. 使用状態1.1 3つの概念に関する質問1.2 例1.3 注記2. リデューサーを使用す...

Linuxの一般的なコマンドでLinuxのmoreコマンドを使用する方法

more は、最もよく使用されるツールの 1 つです。最も一般的な使用方法は、出力コンテンツを表示し...

MySQLのlike演算子の詳細

1. はじめに不明な値または部分的に既知の値をフィルタリングする場合は、like 演算子を使用でき...

MySQL ストアドプロシージャとストアドファンクションの詳細な説明

1 ストアドプロシージャ1.1 ストアドプロシージャとは何かストアド プロシージャは、特定の機能を実...

Reactでレシピシステムを実装する方法を解説した記事

目次1. レシピ集1.1 プロジェクトの背景1.2 テクノロジースタック1.3 開発環境1.4. プ...

Q&A: XML と HTML の違い

Q: xml と html の違いがわかりません。違いは何ですか? A: XMLと HTML の違い...

js 正規表現の先読みと後読み、および非キャプチャグループ化

目次先読みと後読みをキャプチャグループと組み合わせる捕獲グループと非捕獲グループ前を向いて、後ろを振...

Linux で特定のプログラムを見つけるための whereis の例の詳細な説明

Linuxは特定のプログラムを見つけますwhereis コマンドは主にプログラム ファイルを検索し、...

JS クロスドメイン ソリューション React 構成 リバース プロキシ

クロスドメインソリューションjsonp (get をシミュレート) CORS (クロスオリジンリソー...

MySQL 5.7.17 インストール グラフィック チュートリアル (Windows)

最近データベースを学び始めたのですが、とても興味深いコースだと感じていますが、含まれる内容の多くは私...