zoukankan      html  css  js  c++  java
  • vue中 请求拦截 响应拦截设置

        第一,在项目的src中新建http.js文件,将以下代码复制进去

    import axios from 'axios'
    import { Message, Loading } from 'element-ui';
    import router from './router'
    
    let loading        //定义loading变量
    
    function startLoading() {    //使用Element loading-start 方法
        loading = Loading.service({
            lock: true,
            text: '加载中...',
            background: 'rgba(0, 0, 0, 0.7)'
        })
    }
    function endLoading() {    //使用Element loading-close 方法
        loading.close()
    }
    
    // 请求拦截  设置统一header
    axios.interceptors.request.use(config => {
        // 加载
        startLoading()
        if (localStorage.eleToken)
            config.headers.Authorization = localStorage.eleToken
        return config
    }, error => {
        return Promise.reject(error)
    })
    
    // 响应拦截  401 token过期处理
    axios.interceptors.response.use(response => {
        endLoading()
        return response
    }, error => {
        // 错误提醒
        endLoading()
        Message.error(error.response.data)
    
        const { status } = error.response
        if (status == 401) {
            Message.error('token值无效,请重新登录')
            // 清除token
            localStorage.removeItem('eleToken')
    
            // 页面跳转
            router.push('/login')
        }
    
        return Promise.reject(error)
    })
    
    export default axios
    

      第二,在main.js中引入

  • 相关阅读:
    JavaScript 数组去重
    Javascript数组 reduce() 方法
    Vue事件总线(EventBus)
    前端多媒体-音频
    前端多媒体-视频
    VUE3.0 总结
    el-select地区区号选择
    vue中点击获取相应元素
    Markdown 语法
    Codeforces Round #295 (Div. 2) B. Two Buttons 520B
  • 原文地址:https://www.cnblogs.com/WangXinPeng/p/11274070.html
Copyright © 2011-2022 走看看