1.vue.config.js
中配置不同的前缀,以及所对应的后台地址
devServer: {
proxy: {
"/api": {
target: "http://172.xx.x.xxx:xxxx", // 地址1 //表示/api替换成该地址
changeOrigin: true,
pathRewrite: {
"^/api": "", //重写api为空
},
},
"/sucHttp": {
target: "http://172.xx.x.xxx:xxxx", // 地址2 //表示/sucHttp替换成该地址
changeOrigin: true,
pathRewrite: {
"^/sucHttp": "" //重写sucHttp为空
}
},
},
},
2.main.js
中配置axios(默认api)
import axios from 'axios';
if (process.env.NODE_ENV === 'development') {
//开发环境 do something
axios.defaults.baseURL = './api';
} else {
//生产环境 do something
axios.defaults.baseURL = '';
}
Vue.prototype.$http = axios; 创建$http实例,在项目中使用
使用:
import http from "axios";
export const getUrl = (params): Promise<object | any> => {
const url = `接口名称`;
return http.get(url, {params: params}).then((res: any) => res.data);
};
3.sucHttpApi.js
中配置 axios (sucHttp)
import axios from 'axios'
let sucHttp = axios.create({
baseURL: process.env.NODE_ENV === "development" ? "./sucHttp" : "线上地址"
})
使用:
export const getDesNum = () => {
const url = `接口名称`
return sucHttp.get(url).then(res => res.data);
}
用了 sucHttp 请求的接口,会自动加上 sucHttp前缀
, 它会去匹配 vue.config.js 中的前缀,并连接到相应的后台地址,在连接之后会置空 sucHttp(所以我们在本地看到的所有接口请求中都会带有sucHttp,但实际请求时其实并没有,因为已置空)