有效的console.log可以更快的定位bug

这篇博客介绍了如何在Vue项目中使用axios库设置请求和响应拦截器,用于处理请求前的数据预处理,如添加token和userId,以及响应后的错误处理,如显示错误通知并进行页面刷新。此外,还展示了对特定接口不拼接userId的逻辑。
摘要由CSDN通过智能技术生成

效果:

在这里插入图片描述

request.js加入如下代码:

// 请求拦截器 request interceptor
request.interceptors.request.use(config => {
  // 打印 url 和 params
  Vue.prototype.$log.print(config.url, 'url')
  Vue.prototype.$log.print('params', config.data)
  const token = storage.get(ACCESS_TOKEN)
  // 下方为业务处理,可以忽略
  // 如果 token 存在,让每个请求携带自定义 token 请根据实际情况自行修改
  if (token) {
    config.headers['access-token'] = token
  }
  const userId = storage.get(ACCESS_USERID)
  if (userId) {
    // 智能感知平台参数不需要拼接userId
    if (config.url.indexOf('iot-experience-platform') === -1) {
      config.data['userId'] = userId
    }
  }
  return config
}, errorHandler)
// 响应拦截器 response interceptor
request.interceptors.response.use(response => {
  // 打印 response
  Vue.prototype.$log.print('response', response.data)
  // 下方为业务处理,可以忽略
  if (response.data.code && response.data.code !== 200) {
    if (response.data.code === 4031003) {
      notification.error({
        key: tokenAccessKey,
        message: '错误',
        description: getMsgByCode(response.data.code),
        duration: 4
      })
      store.dispatch('Clear').then(() => {
        setTimeout(() => {
          window.location.reload()
        }, 1500)
      })
    } else if (response.data.code === 4041003) {
      store.dispatch('Clear').then(() => {})
    } else {
      notification.error({
        message: '错误',
        description: getMsgByCode(response.data.code)
      })
    }
    return Promise.reject(response.data)
  }
  return response.data
}, errorHandler)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值