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

 

你可能感兴趣的:(axios http错误码处理)