Vue 2.0プロジェクトの中でAxiosは異なるbaseURLを構成して、異なるドメイン名のインタフェースを要求します
23413 ワード
Vue 2.0プロジェクトの中でAxiosは異なるbaseURLを構成して、異なるドメイン名のインタフェースを要求しますプロジェクト需要 準備作業1、utlsを準備する.jsファイル(パスは自分で保存し、main.jsと同じディレクトリに置きます) 準備作業2、共通のcommonを準備する.jsファイル、インポートmain.js(パスは自分で保存し、main.jsと同じディレクトリに置きます) 最初のステップは、プロジェクト*main.js*はaxiosとutlsを導入する.jsとcommon.js 第2のステップは、コンポーネント内でカプセル化された方法を直接使用してサービスを呼び出し、データ を要求する.まとめ プロジェクト要件
最近Vueを使ってバックグラウンド管理システムプロジェクトを開発して、開発過程は1つの特に騒がしい事に出会って、プロジェクトがオンラインになっていないため、すべてのインタフェースのアドレスはバックグラウンド人員のコンピュータがサーバーになるのです.しかし、このプロジェクトにはいくつかのバックグラウンドが同時にインタフェースを開発しており、大きなモジュールごとにインタフェースアドレスが異なります.すべてのリクエストに完全なアドレスを书くと、もちろん実现できますが、私たちのフロントエンドのパッケージの考えに合わないので、パッケージの方法を书いて、参考にして、间违いがあれば、伝言を歓迎します....
準備1、utlsを準備します.jsファイル(パスは自分で保存し、main.jsと同じディレクトリに置きます)
準備作業2、共通のcommonを準備します.jsファイル、インポートmain.js(パスは自分で保存し、main.jsと同じディレクトリに置きます)
最初のステップは、プロジェクトmain.jsはaxiosとutlsを導入する.jsとcommon.js
第2のステップは、コンポーネント内でパッケージされたメソッドを直接使用してサービスを呼び出し、データを要求することです.
まとめ
利点:1、異なるコンポーネントで異なる方法を呼び出すことで実現でき、異なるインタフェースがデータを要求する.2、メンテナンスインタフェースが便利で、後でオンラインになってから、utls.jsのインタフェースはすべてオンラインインタフェースに交換すればよい.
最近Vueを使ってバックグラウンド管理システムプロジェクトを開発して、開発過程は1つの特に騒がしい事に出会って、プロジェクトがオンラインになっていないため、すべてのインタフェースのアドレスはバックグラウンド人員のコンピュータがサーバーになるのです.しかし、このプロジェクトにはいくつかのバックグラウンドが同時にインタフェースを開発しており、大きなモジュールごとにインタフェースアドレスが異なります.すべてのリクエストに完全なアドレスを书くと、もちろん実现できますが、私たちのフロントエンドのパッケージの考えに合わないので、パッケージの方法を书いて、参考にして、间违いがあれば、伝言を歓迎します....
準備1、utlsを準備します.jsファイル(パスは自分で保存し、main.jsと同じディレクトリに置きます)
// URL
module.exports = {
domain: {
Base_M1_URL: 'http://192.168.2.54:8008', //
Base_M2_URL: 'http://192.168.2.90:8080', //
Base_M3_URL: 'http://192.168.2.102:6608', //
Base_M4_URL: 'http://192.168.2.222:9000', //
}
}
準備作業2、共通のcommonを準備します.jsファイル、インポートmain.js(パスは自分で保存し、main.jsと同じディレクトリに置きます)
//1->common.js axios
import Axios from 'axios'
Axios.defaults.timeout = 180000
//2-> get
function paramsToUrl(url, params) {
if (!params) return url
for (var key in params) {
if (params[key] && params[key] != 'undefined') {
if (url.indexOf('?') != -1) {
url += '&' + '' + key + '=' + params[key] || '' + ''
} else {
url += '?' + '' + key + '=' + params[key] || '' + ''
}
}
}
return url
}
//3-> common.js -----
function requireData(url,params,type,item){
if(!url) return false
switch(item){
case 'M1':
url=axios.defaults.baseM1URL+url
break;
case 'M2':
url=axios.defaults.baseM2URL+url
break;
case 'M3':
url=axios.defaults.baseM3URL+url
break;
default:
url=axios.defaults.baseM4URL+url
}
if(type==='get'){
url=paramsToUrl(url, params)
return new Promise((resolve,reject)=>{
Axios.get(url,params).then(res=>{
resolve(res.data)
}).catch(err=>{
reject(err)
})
})
}else{
return new Promise((resolve,reject)=>{
Axios.post(url,params).then(res=>{
resolve(res.data)
}).catch(err=>{
reject(err)
})
})
}
}
export default{
install(Vue,options){
//-> 1
Vue.prototype.reqM1Service=function(url,params,type){
return requireData.call(this,url,params,type,'M1')
}
//-> 2
Vue.prototype.reqM2Service=function(url,params,type){
return requireData.call(this,url,params,type,'M2')
}
//-> 3
Vue.prototype.reqM3Service=function(url,params,type){
return requireData.call(this,url,params,type,'M3')
}
//-> 4
Vue.prototype.reqM4Service=function(url,params,type){
return requireData.call(this,url,params,type,'M4')
}
}
}
最初のステップは、プロジェクトmain.jsはaxiosとutlsを導入する.jsとcommon.js
import Vue from 'vue'
// main.js axios
import axios from 'axios'
// utls.js
import {domain} from './utls.js'
// common.js
import common from './common.js'
Vue.use(common)
// axios
//->1, ,url
axios.defaults.baseM1URL = domain.Base_M1_URL
//->2, ,url
axios.defaults.baseM2URL = domain.Base_M2_URL
//->3, ,url
axios.defaults.baseM3URL = domain.Base_M3_URL
//->4, ,url
axios.defaults.baseM4URL = domain.Base_M4_URL
第2のステップは、コンポーネント内でパッケージされたメソッドを直接使用してサービスを呼び出し、データを要求することです.
<template>
<h2>{{test}}h2>
template>
<script>
export default {
data: function() {
return {
test: " "
};
},
mounted() {
let url = "/login";
let params = {
username: "test",
pass: "123",
token: "1112212123123"
};
//->
this.reqM1Service(url, params).then(
res => {
console.log(res);
}
);
//-> 2
this.reqM2Service(url, params).then(
res => {
console.log(res);
}
);
}
};
script>
まとめ
利点:1、異なるコンポーネントで異なる方法を呼び出すことで実現でき、異なるインタフェースがデータを要求する.2、メンテナンスインタフェースが便利で、後でオンラインになってから、utls.jsのインタフェースはすべてオンラインインタフェースに交換すればよい.