我工作中主要使用vue-cli搭建工程,项目开始需要进行很多环境配置,如commitlint、tslint,axios等,下面逐步上传一些通用配置,方便以后开发,首先从axios开始,代码如下:
import axios from 'axios';
import {Notify} from 'vant';
// 本地会自动走vue.config.js里的代理地址,不需要配置baseUrl。否则代理会失效
if (process.env.VUE_APP_ENV !== 'development') {
axios.defaults.baseURL = process.env.VUE_APP_SERVER;
}
// axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded'
axios.defaults.withCredentials = true; // 让ajax携带cookie
// 请求拦截
axios.interceptors.request.use(
(config) => {
const token = localStorage.getItem('token');
if (token) {
// 判断是否存在token,如果存在的话,则每个http header都加上token
config.headers.token = token; //请求头加上token
}
return config;
},
(err) => {
return Promise.reject(err);
}
);
//拦截响应,做统一处理
axios.interceptors.response.use(
(response) => {
const {data: {code, msg}} = response;
if (code === 0 || code === 200) {
return response;
} else if (code === 809 || code === 808) {
Notify({type: 'warning', message: '程序验证已过期,请重新进入'});
setTimeout(() => {
if (process.env.NODE_ENV === 'production') {
location.href = '/transreportpage/';
} else {
location.href = '/';
}
}, 2000);
} else {
// 统一的错误信息处理
Notify({type: 'warning', message: msg});
}
return response;
},
function(error) {
Notify({type: 'warning', message: `很遗憾 请求无响应:${error}`});
return Promise.reject(error); // 返回接口返回的错误信息
}
);
// #utf8 编码否则会出现中文乱码
// 200=成功
// 0=成功
// 400=参数异常
// 404=资源不存在
// 401=需要认证后访问
// 403=系统拒绝访问
// 500=系统异常
// 504=请求超时
//
// 700=用户名不能为test
// 701=用户不存在
//
// 800=验证码不正确
// 801=不支持的登录类型
// 802=登录失败
// 803=账户名或者密码输入错误
// 804=账户被锁定,请联系管理员
// 805=密码过期,请联系管理员
// 806=账户过期,请联系管理员
// 807=账户被禁用,请联系管理员
// 808=账户没有登录
// 809=没有权限访问