(02/06/21) request

import axios from 'axios'
import { Message } from 'element-ui'
import store from '@/store'
import router from '@/router'

// 创建一个axios的实例
const service = axios.create({
  // baseURL: 'http://xxx.xx.xx.x:xxxx', // axios请求基地址
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 5000 // 定义5秒超时
})

// 请求拦截器
service.interceptors.request.use(function(config) {
  // 在发送请求之前做些什么
  // console.log(config)
  if (store.state.user.token) {
    // 给config.headers(请求头)身上添加一个Authorization属性(Authorization 和 Bearer 为后端指定写法)
    config.headers['Authorization'] = 'Bearer ' + store.state.user.token
  }
  return config
}, function(error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 响应拦截器
service.interceptors.response.use(response => {
  if (response.data.success) {
    // 操作成功
    // console.log(response)
    return response.data // 在返回有效数据时,直接返回res.data, 避免获取有效数据代码冗余
  } else { // 如果success为false 业务出错,直接触发reject
    return Promise.reject(new Error(response.data.message)) // 返回错误信息
  }
}, error => {
  // console.dir(error)
  if (error.response.data.code === 10002) { // token过期
    Message({
      duration: 1000,
      message: 'token过期,请重新登录!',
      type: 'error'
    })
    store.dispatch('user/logout') // 调用执行退出方法,删除token和用户信息
    router.push('/login') // 回到登录页
  }
  return Promise.reject(error) // 返回执行错误 让当前的执行链跳出成功 直接进入 catch
})

export default service
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值