Axios 的 使用

在until文件夹 新建request.js 文件,文件内容如下:

引入相关文件

import axios from 'axios'

import { Notification, MessageBox } from 'element-ui'

import store from '@/store'

import router from '@/router'

import { getToken } from '@/utils/auth'

设置全局默认头部

axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' || axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'axios.defaults.headers['Access-Control-Allow-Origin'] = '*' 访问控制允许来源

创建axios示例

const request = axios.create({

  // `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。

    // 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL

  baseURL: 'https://some-domain.com/api/',

  // `timeout` 指定请求超时的毫秒数(0 表示无超时时间)

  // 如果请求话费了超过 `timeout` 的时间,请求将被中断

  timeout: 1000

})

添加拦截器

// 添加请求拦截器

axios.interceptors.request.use(function (config) {

    // 在发送请求之前做些什么

    return config;

  }, function (error) {

    // 对请求错误做些什么

    return Promise.reject(error);

  });

例如:

  service.interceptors.request.use(

    config => {

      if (getToken()) {

        config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改

    }

    return config

  },

  error => {

    // console.log(error)

    Promise.reject(error)

  }

)

添加响应拦截器

axios.interceptors.response.use(function (response) {

    // 对响应数据做点什么

    return response;

  }, function (error) {

    // 对响应错误做点什么

    return Promise.reject(error);

  });

例如:

  service.interceptors.response.use(res => {

  const code = res.data.code

    if (code === 401) {

      MessageBox.confirm(

        '登录状态已过期,您可以继续留在该页面,或者重新登录',

        '系统提示',

        {

          confirmButtonText: '重新登录',

          cancelButtonText: '取消',

          type: 'warning'

        }

      ).then(() => {

        store.dispatch('LogOut').then(() => {

          location.reload() // 为了重新实例化vue-router对象 避免bug

        })

        router.push('/login')//跳转到登录页

      })

    } else if (code !== 200 && code !== 0 && code !==200000 && code!=="200000" && code!=="500000") {

      Notification.error({

        title: res.data.msg

      })

      return Promise.reject('error')

    } else {

      return res.data

    }

  },

    error => {

      /** 暂时注释、屏蔽退出报错和有时刷新报错 NetWork Error

      console.log('err' + error)

      Message({

        message: error.message,

        type: 'error',

        duration: 5 * 1000

      })

      return Promise.reject(error)

      **/

    }

  )

export default request

// 创建axios实例文件下载

export const excalService = axios.create({

  baseURL: process.env.VUE_APP_BASE_API,

  timeout: 100000,

  // headers: { 'Authorization': 'Bearer ' + getToken() }

})

// request拦截器

excalService.interceptors.request.use(

  config => {

    if (getToken()) {

      config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改

    }

    return config

  },

  error => {

    // console.log(error)

    Promise.reject(error)

  }

)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值