Axios-拦截器interceptors

有4个拦截:请求成功 | 请求失败 | 响应成功 | 响应失败

export function request(config) {
    const instance = axios.create({
      baseURL: 'http://123.207.32.32:8000',
      timeout: 5000
    })
    //拦截器
    instance.interceptors.request.use(
      //请求成功 ,有网一般都能请求成功
      config=>{
        console.log(config);
        //1.比如config中的信息不符合服务器的要求
        //2.每次发送网络请求时,都希望在界面中显示一个请求的图标,添加请求的动画
        //3.某些网络请求(比如登录(token)),必须携带一些特殊的东西, 拦截掉,跳转至指定界面就
        return config //接续执行,放行
      },
      //请求失败
      err=>{
        console.log(err);
      }
    )

    //响应拦截
    instance.interceptors.response.use(
      res=>{
        console.log(res);
        return res.data //接续执行
      },
      err=>{
        console.log(err);
      }
    )
    return instance(config)
}

拦截请求的config
request
在这里插入图片描述

响应的数据

在这里插入图片描述

自己的总结

//请求拦截
instance.interceptors.request.use(config=>{
  //每次请求都带上token
  config.headers['authorization'] = localStorage.getItem("token")
  return config
  }, err=>{ //请求失败
     Element.Message.error('请求失败' + err,{duration: 3000})
  })


//响应拦截
instance.interceptors.response.use(
  //服务器响应成功,Result返回的结果
  res=>{
    console.log('服务端可以响应数据'); console.log(res);
    if(res.data.code === 200) return res.data; //回调结果,获取数据就是 res.data(result).data(result中的data结果集)
    else{
      //自己返回Result 的异常
      Element.Message.error(res.data.msg?res.data.msg:'服务器可以响应,返回结果msg为空') // res.data
      //拦截响应,阻止运行
      return Promise.reject(res.data.msg); //直接返回result里面的msg信息
    }
  },
  //服务器无法响应
  err=>{
    console.log('服务器无法响应')
    console.log(err);
    //if(err.response.data) err.message = err.response.data.msg
    //if(err.response.status === 401) router.push('/login')

    Element.Message.error('服务器不能响应数据 ' + err.message,{duration: 3000})
    return Promise.reject(err) //回调

    /**
     * 这就是err
     * Error: Request failed with status code 404
     at createError (createError.js?2b31:16)
     at settle (settle.js?e8a0:17)
     at MockXMLHttpRequest.handleLoad [as onreadystatechange] (xhr.js?5e03:62)
     at MockXMLHttpRequest.dispatchEvent (mock.js?03a1:8476)
     at XMLHttpRequest.handle (mock.js?03a1:8304)
     */
  }
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值