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

推薦する

5分でWebRTCビデオチャットを構築する

前回の記事では、Ubuntu 上の webrtc ベースの多人数ビデオチャット サービスの詳細なコー...

フロントエンドのパフォーマンス最適化を学ぶ準備として、HTMLページのレンダリングプロセスを理解する

現在、フロントエンドのパフォーマンス最適化について学んでいます。適切な解決策を見つけ、パフォーマンス...

Reactイベントスロットリング効果が失敗する理由と解決策

目次ここでの問題は次の通りです:解決策1:解決策2: コンストラクタで初期化を割り当てる採掘場の概要...

MySQL における 8 つの一般的な SQL 使用例

序文MySQL は、2016 年もデータベースの人気において力強い成長傾向を維持し続けました。 My...

Linux サーバー上で複数の SVN リポジトリを構成するプロセスの詳細な説明

1. 指定されたディレクトリにリポジトリを作成し、ディレクトリ全体を保存してください。この記事のサン...

HTMLで境界線を設定する3つの方法の詳細な説明

HTML で境界線を設定する 3 つの方法 境界線の幅: 1px 2px 2px; 境界線のスタイル...

タグのhref属性とonclickイベントの使用例

a タグは主にページ ジャンプを実装するために使用され、これは href 属性または onclick...

Next.js 入門チュートリアル

目次導入Next.jsプロジェクトを作成するNext.js プロジェクトを手動で作成するcreact...

JavaScript におけるシリアル操作と並列操作

目次1. はじめに2. es5メソッド3. 非同期関数のシリアル実行4. 非同期関数の並列実行5. ...

企業サイトとコラム辞典 中国語と英語の比較 中国語と英語のバイリンガル企業サイトを作る仲間は

名前キャラクター名前キャラクター情報ニューステクノロジー技術スキンケアスキンケア補う補う香水香水化粧...

Vue が Ref を使用してレベル間でコンポーネントを取得する手順

VueはRefを使用してレベル間でコンポーネントインスタンスを取得します例の紹介開発プロセスでは、レ...

LINUX での IPTABLES ファイアウォールの基本的な使用方法のチュートリアル

序文パブリック IP を持つ本番 VPS の場合、必要なポートのみが開かれ、IP とポートを制御する...

MySQLカスケードレプリケーションの実装方法の例

いわゆるカスケード レプリケーションでは、マスター サーバーが 1 つのスレーブ サーバーにのみデー...

タブ切り替え効果を実現するJavaScript

この記事では、タブ切り替え効果を実現するためのJavaScriptの具体的なコードを参考までに紹介し...

vue.js パッケージ化プロジェクトの後の空白ページの解決策

Vueに触れたばかりのパートナーの多くは、開発環境ではVueプロジェクトは正常であるが、パッケージ化...