http请求返回状态码

后端希望控制台出现401的时候不要出现这种报错信息,但是关键是你返回的状态码是401啊我哭,

一般情况下都是,如果请求正常,响应状态码都是200,权限过期的话就是返回的code为401,此时复习一下状态码的含义:

响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):

分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

but 返回的是

401啊,此401非彼401啊,但是我说不通,于是拉过旁边的后端人员来跟他解释啊哈哈哈。

其实他看了我的代码的,但是他看不懂,因为他之前写的是原生的ajax不是axios。

我的代码结构是这样子的

附上源码:

axios.interceptors.request.use(
  (config) => {
    let token = window.localStorage.getItem("accessToken");
    config.headers.ContentType = "application/json-patch+json"
    // 统一改请求头
    // axios.defaults.baseURL = 'https://api.example.com';
    // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
    // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';    
    if (token && !config.url?.includes('.ashx')) {
      config.headers.Token = token
    }
    return config
  },
  (error) => {
    return Promise.reject(error);
  }
);
​
//配置响应的拦截器
axios.interceptors.response.use(
  (response) => {
    // 相同请求不得在600毫秒内重复发送,反之继续执行
    const requestData = getRequestIdentify(response.config);
    // 请求获得响应后,将该请求从map中移除,以使后面的请求正常发送。
    if (requestMap.has(requestData)) {
      requestMap.delete(requestData)
    }
    let data = response;
    if (data.data.code === 0) {
      return data;
    }
    if (data.data.code === 401 || data.data.code === 'A0230') { // token过期 权限验证失败
      ElMessage.error(data.data.message ? data.data.message : '权限401,token过期')
      router.push('/login')
      return data
    }
    // if (data.data.code === 402) { //没有菜单权限
    //   ElMessage.error(data.data.Msg)
    //   return data
    // }
    // if (data.data.code === 400) { //没有项目权限
    //   // window.location.replace(baseURL + '/login')
    //   // localStorage.removeItem('token')
    //   ElMessage.error(data.data.Msg)
    //   // window.history.go(0)
    //   return data
    // }
    return response;
​
  },
  (error) => {
    if (error && error.response) {
      // 1.公共错误处理
      // 2.根据响应码具体处理
      switch (error.response.status) {
        case 400:
          error.message = "通用错误";
          break;
        case 401:
          error.message = error.message ? error.message : '权限401,token过期'
          localStorage.clear()
          router.push('/login')
          // localStorage.clear()
          break;
        case 403:
          error.message = "验证失败";
          break;
        // case 404:
        //   error.message = "请求错误,未找到该资源";
        //   // window.location.href = "/NotFound";
        //   break;
        // case 405:
        //   error.message = "请求方法未允许";
        //   break;
        // case 408:
        //   error.message = "请求超时";
        //   break;
        // case 500:
        //   error.message = "服务器端出错";
        //   break;
        // case 501:
        //   error.message = "网络未实现";
        //   break;
        // case 502:
        //   error.message = "网络错误";
        //   break;
        // case 503:
        //   error.message = "服务不可用";
        //   break;
        // case 504:
        //   error.message = "网络超时";
        //   break;
        // case 505:
        //   error.message = "http版本不支持该请求";
        //   break;
        default:
          error.message = `连接错误${error.response.status}`;
      }
    } else {
      // 超时处理
      if (JSON.stringify(error).includes("timeout")) {
        error.message = "服务器响应超时,请刷新当前页";
      } else {
        error.message = "连接服务器失败";
      }
    }
    /***** 处理结束 *****/
    ElMessage.closeAll()
    ElMessage.error(error.message)
    return Promise.resolve(error.response);
  }
)

本来是在response里处理的,后来发现他返回的是状态码401,所以才加的

我哭,结果居然让我那个报错我怎么让他不出现,这可真是太为难我啦!!!因为状态码不是2**都会报错哒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值