Vueでaxiosを簡単にカプセル化する方法

Vueでaxiosを簡単にカプセル化する方法

Vueにaxiosを挿入する

'axios' から axios をインポートします。
Vue.prototype.$axios = axios;
'axios' から axios をインポートします

axios.defaults.timeout = 5000; //応答時間 axios.defaults.headers.post['Content-Type'] = 'application/json; charset=UTF-8'; //リクエストヘッダーを構成する axios.defaults.withCredentials= true; //Cookieあり
axios.defaults.baseURL = 'http://localhost:8080/'; //インターフェースアドレスの設定 //POSTパラメータのシリアル化(リクエストインターセプターの追加)
axios.interceptors.request.use((config) => {
	// バックエンドに応じて、ここでシリアル化コードを追加できます。私が使用する SSM バックエンドは Json オブジェクトを受け入れます。シリアル化が必要な場合は、qs コンポーネント return config を使用できます。
},(エラー) =>{
    console.log('間違ったパラメータが渡されました')
    Promise.reject(error) を返します。
});

//ステータス判定を返す(レスポンスインターセプターを追加)
axios.interceptors.response.use((res) => {
    // 応答データを使って何かする if (!res.data.success) {
        Promise.resolve(res) を返します。
    }
    res を返します。
}, (エラー) => {
    console.log('ネットワーク異常')
    Promise.reject(error) を返します。
});

// Promise を返す (POST リクエストを送信する)
エクスポート関数 fetchPost(url, params) {
    新しい Promise を返します ((resolve, reject) => {
        axios.post(url, パラメータ)
            .then(応答 => {
                解決(応答);
            }, エラー => {
                拒否(エラー);
            })
            .catch((エラー) => {
                拒否(エラー)
            })
    })
}
Promise を返す (get リクエストを送信する)
エクスポート関数 fetchGet(url, param) {
    新しい Promise を返します ((resolve, reject) => {
        axios.get(url, {params: param})
            .then(応答 => {
                解決(応答)
            }, エラー => {
                拒否(エラー)
            })
            .catch((エラー) => {
                拒否(エラー)
            })
    })
}
エクスポートデフォルト{
    フェッチポスト、
    取得、
}

簡単なテスト:

loginPost: 関数() {
		パラメータ = {
			'パスワード': '123',
			'ユーザー名': 'admin'
		}
		http.fetchPost('/login', params).then((データ) => {
			コンソール.log(データ)
		}).catch(エラー => {
			コンソール.log(エラー)
		})
	},
こんにちは: 関数() {
		http.fetchGet('/hello', "").then((データ) => {
			コンソール.log(データ)
		}).catch(エラー => {
			コンソール.log(エラー)
		})
	},

投稿リクエスト:

リクエストを取得:

クロスドメインの問題、バックエンドの構成は次のとおりです。

SpringMVC.xml でクロスドメインを構成します。

<!-- インターフェースのクロスドメイン構成 -->
    <mvc:cors>
        <!-- allowed-methods="*" --> <!-- すべてのリクエストが有効であることを意味します -->
        <mvc:mapping path="/**" allowed-origins="*"
                     許可されるメソッド="POST、GET、OPTIONS、DELETE、PUT"
                     allowed-headers="コンテンツタイプ、アクセス制御許可ヘッダー、認証、X-Requested-With"
                     許可資格情報="true"/>
    </mvc:cors><!-- インターフェースのクロスドメイン構成 -->

インターフェース構成:

Vue で設定する vue.config.js を作成します。

モジュール.エクスポート = {
  開発サーバー: {
    プロキシ: {
        '/api': {
            ターゲット: 'http://127.0.0.1:8080',
            // 仮想サーバーがローカルに作成され、要求されたデータが同時に送受信されるため、サーバーとサーバーが相互にやり取りするときにクロスドメインの問題は発生しません。changeOrigin: true、 
            ws: 真、
            パス書き換え: {
                '^/api': '' 
                // ターゲット内のリクエスト アドレスを置き換えます。つまり、今後 http://api.jisuapi.com/XXXXX のアドレスをリクエストする場合は、/api と記述するだけです。}
        }
    }
  }
}

バックエンドも正常にクッキーを取得できます。

もちろん、次の設定に注意してください。これがクッキーの理由です

axios.defaults.withCredentials = true;

要約する

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

以下もご興味があるかもしれません:
  • TypeScript を使用して Vue3 で axios をカプセル化する詳細な例
  • Vueでaxiosをカプセル化する方法
  • axiosリクエストをvueでカプセル化する方法
  • Vueでaxiosをカプセル化するいくつかの方法
  • Vue における AXIOS カプセル化の詳細な説明

<<:  MySQL ステートメントに一重引用符またはバックスラッシュを含む値を挿入する方法

>>:  Centos に MYSQL8.X をインストールするチュートリアル

推薦する

JavaScriptオフセットは、ウィンドウ内でのマウス座標の取得とモジュールのドラッグを実装します。

オフセットOffset はオフセットです。関連プロパティの offset シリーズを使用すると、次の...

MySQL 8.0.11 のインストールと設定方法のグラフィックチュートリアル MySQL 8.0 の新しいパスワード認証方法

この記事では、参考までにMySQL8.0.11のインストールと設定方法、およびMySQL8.0の新し...

Windows での MySQL 5.7.18 のインストールと設定のチュートリアル

この記事では、WindowsでのMySQL 5.7.18のインストールと設定のチュートリアルを参考ま...

JavaScript カウントダウン プロンプト ボックス

この記事の例では、カウントダウンプロンプトボックスを実装するためのJavaScriptの具体的なコー...

HTMLは正規表現を使用してテーブルの例をテストします

以下は、HTML で正規表現を使用してテーブルをチェックするサンプル コードです。具体的なコードの内...

nginxのシンプル転送リクエストのサーバーとロケーション設定の詳しい説明

nginx のサーバーと場所の構成を簡単に整理してみましょう。たとえば、URL: www.mask_...

Linux パーティションまたは論理ボリュームにファイルシステムを作成する方法

序文システムにファイル システムを作成し、それを永続的または非永続的にマウントする方法を学習します。...

TypeScript 2.0 マーク付き共用体型の詳細な説明

目次タグ付きユニオン型を使用した支払い方法の構築タグ付きユニオン型を使用した Redux アクション...

ろうそくを溶かす(水滴)サンプルコードを実現する純粋な CSS

成果を達成する実装のアイデアフィルターのコントラストとぼかしを利用して溶ける効果を実現します。親要素...

MySQLデータ移行の概要

目次序文: 1. データ移行について2. 移行計画と留意点要約:序文:日常業務では、テーブル、データ...

Mysql5.7 で JSON 操作関数を使用する手順

序文JSON は、言語に依存しないテキスト形式を使用する軽量のデータ交換形式で、XML に似ています...

スライダーを作成するためのネイティブ js ドラッグ アンド ドロップ機能のサンプル コード

ドラッグ アンド ドロップはフロントエンドでよく使われる機能であり、多くのエフェクトで js のドラ...

Web ページでパラメータ名によって ActiveX コントロールのプロパティに値を割り当てる例

コードをコピーコードは次のとおりです。 <HTML> <ヘッド> <T...

HTML チュートリアル: 画像のサイズ、配置、間隔、境界線の属性を変更する方法

画像タグ: <img> ページに画像を挿入するには、「src」属性を持つ「img」タグを...

コーディングスキルを向上させるためのJavaScriptのヒント

目次1. 一意の値をフィルタリングする2. 短絡評価2.1 シナリオ例3. ブール変換4. 文字列を...