axios http错误码处理

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)
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值