httpErrCodes.js
const ERR_CODE_LIST = { //常见错误码列表 [400]: "请求错误", [401]: "登录失效或在其他地方已登录", [403]: "拒绝访问", [404]: "请求地址出错", [408]: "请求超时", [500]: "服务器内部错误", [501]: "服务未实现", [502]: "网关错误", [503]: "服务不可用", [504]: "网关超时", [505]: "HTTP版本不受支持" } export function getErrMsg(error) {//通过error处理错误码 if(!error.response) {//无网络时单独处理 return {errCode:null, errMsg:"网络不可用,请刷新重试"} } const errCode = error.response.status //错误码 const errMsg = ERR_CODE_LIST[errCode] //错误消息 return {errCode: errCode,errMsg: errMsg ? `${errMsg} [${errCode}]` : error.message} }
return axios({ method: 'post', baseURL: setBaseUrl(), url: requestUrl, data: params || {}, // get 请求时带的参数 timeout: 100000, responseType: type || 'json', headers: headerInfo }).then( (response) => { let {result,code,msg} = response if(!result&&code == "401"){ msgBox = showMsgBox(msg,() => { store.dispatch("loginOut"); //前端退出 routes.push('/login'); //跳转 }) return } return response; } ).catch(error => { const {errCode,errMsg} = getErrMsg(error); if(errCode == 401){ //登录失效 -> 跳转登录页 if(!msgBox){ msgBox = showMsgBox(errMsg,() => { store.dispatch("loginOut"); //前端退出 routes.push('/login'); //跳转 }) } }else{ showMsg(errMsg); } return Promise.reject(error) })