• 【无标题】


    我问你答

    首先第一个问题:封装的文件在哪?

    不会吧不会吧,不会真的有人不知道这么简单的问题吧

    是在utils/request.js 中 附赠axios的拦截器官网

    第二个:都知道拦截器有两,但它们各自作用是啥?

    请求拦截器主要完成token的统一注入

    // axios的请求拦截器
    service.interceptors.request.use(
      config => {
        if (store.getters.token) {
          config.headers['X-Token'] = getToken()
        }
        return config
      },
      error => {
        console.log(error)
        return Promise.reject(error)
      }
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    响应拦截器主要处理返回的数据异常数据结构 问题

    // 响应拦截器
    service.interceptors.response.use(
      response => {
        const res = response.data
        // if the custom code is not 20000, it is judged as an error.
        if (res.code !== 20000) {
          Message({
            message: res.message || 'Error',
            type: 'error',
            duration: 5 * 1000
          })
          if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
            // to re-login
            MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
              confirmButtonText: 'Re-Login',
              cancelButtonText: 'Cancel',
              type: 'warning'
            }).then(() => {
              store.dispatch('user/resetToken').then(() => {
                location.reload()
              })
            })
          }
          return Promise.reject(new Error(res.message || 'Error'))
        } else {
          return res
        }
      },
      error => {
        console.log('err' + error) // for debug
        Message({
          message: error.message,
          type: 'error',
          duration: 5 * 1000
        })
        return Promise.reject(error)
      }
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    其实在utils/request.js文件中,先简单写这

    // 导出一个axios的实例  而且这个实例要有请求拦截器 响应拦截器
    import axios from 'axios'
    const service = axios.create() // 创建一个axios的实例
    // service.interceptors.request.use() // 请求拦截器
    // service.interceptors.response.use() // 响应拦截器
    export default service // 导出axios实例
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    封装axios的内容有几个

    有三个

    • axios.create
    • 请求拦截器
    • 响应拦截器

    不会吧不会吧,这么简单/基础的知识点,不会还有人不知道吧

    过程图
    在这里插入图片描述

  • 相关阅读:
    一种朴素的消失点计算方法
    牛客网SQL157
    对接京东平台的第一篇
    Day35PHP数组
    JAVA线程和线程池
    Python实现的桌面翻译程序代码
    C++实现四叉树索引
    『Linux』Linux环境搭建 | 阿里云云服务器白嫖 | Xshell环境配置
    Kotlin 1.5新特性记录
    QT 初识多线程
  • 原文地址:https://blog.csdn.net/LJM51200/article/details/126323173