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

推薦する

ie8/ie9/ie10/ie11 chrome firefox を区別するための CSS コード

ウェブサイトの互換性のデバッグは本当に面倒です。今日のウェブサイト デザイナーは、以前よりもはるかに...

フォームアクションとonSubmitの例

まず、action はフォームの属性です。HTML5 では必須の属性値として定義されています。onS...

JavaScript の BigIn 関数の共通プロパティをまとめます

目次1. 概要2. 属性1. 数学演算子2. 比較演算子3. ブール演算結論1. 概要BigInt ...

Windows10システムにMySQL 5.7.17をインストールする

オペレーティング システム win10 MySQL は、公式 Web サイトからダウンロードした 6...

Nginx で複数のドメイン名がドメインをまたいでアクセスできるようにマップを使用する方法

一般的なNginx構成ではクロスドメインが可能 サーバー{ 11111 を聞いてください。 serv...

ZFS とは何か? ZFS を使用する理由とその機能

ZFSの歴史Z ファイル システム (ZFS) は、2001 年に Matthew Ahrens と...

mysql-5.7.21-winx64 無料インストール版のインストール - Windows チュートリアル詳細説明

1 ダウンロードアドレスは https://dev.mysql.com/downloads/mysq...

Linux (CentOS7) で RPM を使用して MySQL 8.0.11 をインストールするチュートリアル

目次1. インストールの準備1. Linux関連情報の表示(Linuxコマンドライン操作) 2. M...

vue-router 4 の使用例の詳しい説明

目次1. インスタンスをインストールして作成する2. vue-router4の新機能2.1 動的ルー...

Linux サーバーに Python3 をインストールする 2 つの方法

最初の方法Alibaba Cloud および Baidu Cloud サーバーが利用可能です。 ! ...

JS にこれがあるのはなぜですか?

目次1. 需要2. 解決策3. 最初の改善4.砂糖を加える5. 理解不能6. 問題点7. オブジェク...

CSSを使用して中央に固定された2つの列と適応型列を実現する方法

1. 絶対位置とマージンを使用するこの方法の原則は、左側と右側をドキュメントの流れから外れるように配...

Windows 上の Docker にさまざまなソフトウェアをインストールする詳細なプロセス

1. MySQLをインストールする # docker で mysql をダウンロード docker ...

CUDA8.0とCUDA9.0はUbuntu16.04で共存します

序文Github にある以前のコードには、CUDA 8.0 環境が必要なものもあります。初心者の場合...

良いと思う国内のデザインサイトをいくつか選んでみました。

<br />私が良いと思った国内のデザインサイトをまとめてみました。広告ではありません!...