当我们使用vuecli做项目时,用到axios来调用后台数据,这个时候我们要对axios进行封装,方便维护
1.src下新建request文件夹

2.config.js中
let url
if (process.env.NODE_ENV == "development") {
url = "http://192.168.1.6:8002"
} else {
url = "http://127.0.0.1:8002"
}
export default {
url
}
3.http.js
import config from './config'
import Axios from 'axios';
import router from '../router'
import { MessageBox } from 'element-ui'
import { Message } from 'element-ui'
const axios = Axios.create({
baseURL: config.url,
timeout: 150000,
});
axios.interceptors.request.use(
function(config) {
let configurl = config.url
let userinfo = JSON.parse(localStorage.getItem('userInfo')) || ''
if (userinfo) {
let tokens = userinfo.cli_user.token
let xcxtoken = userinfo.wx_user.token
if (tokens && typeof tokens === 'string') {
if (configurl.indexOf("/api_wx") != -1) {
config.headers.Authorization = 'Bearer ' + xcxtoken;
} else {
config.headers.Authorization = 'Bearer ' + tokens;
}
}
}
return config;
},
function(error) {
Message.error('请求中错误:' + error);
return Promise.reject(error);
}
);
axios.interceptors.response.use(
function(response) {
if (response.status == 200) {
if (response.data.code != 0) {
MessageBox.alert(response.data.msg, '错误', {
confirmButtonText: "确定",
type: "error",
}).then(() => {
if (response.data.code == 401) {
localStorage.removeItem("userInfo");
router.replace("/login");
}
})
if (response.data.msg == "user auth error") {
localStorage.removeItem("userInfo");
localStorage.removeItem("permissions");
router.replace("/login");
}
if (response.data.msg == "login timeout or not login") {
localStorage.removeItem("userInfo");
localStorage.removeItem("permissions");
router.replace("/login");
}
if (response.data.msg == "登录超时,请重新登录.") {
localStorage.removeItem("userInfo");
localStorage.removeItem("permissions");
router.replace("/login");
}
}
} else {
MessageBox.alert('系统错误', '错误', {
confirmButtonText: "确定",
type: "error",
})
}
return response;
},
function(error) {
MessageBox.alert(error, '错误', {
confirmButtonText: "确定",
type: "error",
})
return Promise.reject(error);
}
);
export default axios
4.api.js
import login from './login'
import home from './home'
export default {
...login,
...home,
}
5.模块下使用接口
import http from '../http.js';
let getvip = (params) => {
return http({
url: '/grade/grade',
params
})
}
let addvip = (data) => {
return http({
method: 'POST',
url: '/grade/grade',
data
})
}
export default {
getvip,
addvip
}
6.main.js中挂载全局api
import api from './request/api'
Vue.prototype.$api = api
7.在组建中使用
getlist() {
this.loading = true;
this.$api.getvip( this.formInline ).then((res) => {
this.loading = false;
if (res.data.code == 1) {
this.tableData = res.data.data.list;
}
});
},