美文网首页
请求拦截器 与 响应拦截器(Vue)

请求拦截器 与 响应拦截器(Vue)

作者: 生命里那束光 | 来源:发表于2022-05-27 23:00 被阅读0次
前提:

请求拦截器和响应拦截器主要应用场景:请求网络接口

  • 请求拦截器:发送请求的时候,携带一些信息
  • 响应拦截器:接收到数据的时候,进行数据过滤、对状态码判断,进行对应的操作

Vue的网络请求可以在main.js里面进行封装配置

import axios from 'axios'
// 为axios配置请求的根路径
axios.defaults.baseURL = 'http://43.142.35.140:8890/api/private/v1/'
// 设置拦截器
axios.interceptors.request.use(config => {
  // 为请求头对象,添加Token验证的Authorization字段,才可以调用有权限的API
  config.headers.Authorization = window.sessionStorage.getItem('token')
  // 在最后必须return config
  return config
})
// 把axios包挂载到vue的原型对象上
Vue.prototype.$http = axios

一、请求拦截器

  • 请求拦截器的作用是在请求发送前进行一些操作,例如在每个请求体里加上token,统一做了处理如果以后要改也非常容易。

代码实现(Vue)

// 请求超时时间
axios.defaults.timeout = 120000

// 添加请求拦截器
axios.interceptors.request.use(
  config => {
    // 在发送请求之前做些什么
    // 判断是否存在token,如果存在将每个页面header都添加token
    if (window.sessionStorage.getItem('DT')) {
      // 请求头配置全局token
      config.headers.DT = window.sessionStorage.getItem('DT')
    }
    return config
  },
  err => {
    // 对请求错误做些什么
    Vue.prototype.$message.error('请求超时')
    return Promise.reject(err)
  }
)

二、响应拦截器

  • 响应拦截器的作用是在接收到响应后进行一些操作
    • 例如在服务器返回登录状态失效,需要重新登录的时候,跳转到登录页。
    • 对接收到的数据进行处理筛选,只留下需要的数据
  • 响应拦截器也是一样如此,就是在请求结果返回后,先不直接导出,而是先对响应码等等进行处理,处理好后再导出给页面,如果将这个对响应码的处理过程抽出来,就成了所谓的响应拦截器。

代码实现(Vue)

// 响应拦截器
axios.interceptors.response.use(
  response => {
    // res是响应的结果
    switch (response.data.code) {
      case 401:
        // 登录失效
        // 响应成功的拦截
        console.log('响应拦截器:')
        // console.log(response.data)
        Vue.prototype.$message.error(response.data.message)
        sessionStorage.removeItem('DT')
        router.push('/login')
        break
      case 404:
        if (response.data.message !== null) {
          Vue.prototype.$message.error(response.data.message)
        } else {
          Vue.prototype.$message.error('未知错误')
        }
        break
      case 500:
        // 错误
        if (response.data.message !== null) {
          Vue.prototype.$message.error(response.data.message)
        } else {
          Vue.prototype.$message.error('未知错误')
        }
        break
      default:
        return response
    }
    return response
  },
  err => {
    if (err.response.data.message) {
      Vue.prototype.$message.error(err.response.data.message)
      return Promise.reject(err.response.data.message) // 返回接口返回的错误信息
    } else {
      // 返回状态码不为200时候的错误处理
      Vue.prototype.$message.error(err.toString())
      return Promise.resolve(err)
    }
  }
)

三、页面中请求接口时

// 用户登录提交
    login() {
      // debugger
      this.$refs.loginFormRef.validate(async valid => {
        if (!valid) return
        if (valid) {const userInfo = {
            username: this.loginForm.username,
            password: this.loginForm.password
          }
          // 登录之前去除token
          window.sessionStorage.removeItem('DT')
          const { data: res } = await this.$http.post('/system/login', userInfo)
          if (res.code !== 200) {
            this.initCaptcha()
            return
          }
          this.$message.success('登录成功')
          window.sessionStorage.setItem('DT', res.result.token)
          this.$router.push('/main')
        }
      })
    }

相关文章

  • 请求拦截器 与 响应拦截器(React)

    前提: 请求拦截器和响应拦截器主要应用场景:请求网络接口请求拦截器:发送请求的时候,携带一些信息响应拦截器:接收到...

  • 请求拦截器 与 响应拦截器(Vue)

    前提: 请求拦截器和响应拦截器主要应用场景:请求网络接口请求拦截器:发送请求的时候,携带一些信息响应拦截器:接收到...

  • 小程序添加fly配置

    添加请求拦截器 添加响应拦截器,响应拦截器会在then/catch处理之前执行 挂载原型

  • axios--拦截器(1)

    关于axios的拦截器是一个作用非常大,非常好用的东西。分为请求拦截器和响应拦截器两种。 请求拦截器响应拦截器 我...

  • axios安装与基本配置

    安装:$npm install axios --save get请求: post请求: 请求拦截器和响应拦截器

  • vue之axios篇 request拦截器的使用

    axios里面可以设置拦截器 ,可以在我们正式请求发送之前做一些事情拦截器分请求拦截器和响应拦截器首先我们看下请求...

  • axios 请求拦截器&响应拦截器

    一、 拦截器介绍 一般在使用axios时,会用到拦截器的功能,一般分为两种:请求拦截器、响应拦截器。 请求拦截器在...

  • axios使用详解

    文档 1. 拦截器 1.1 请求拦截器 基本格式 可以添加一些头部信息 1.2 响应拦截器 axios响应时,基本...

  • axios拦截器

    拦截器 在请求或响应被then或catch处理前拦截它们。 // 添加请求拦截器 axios.intercepto...

  • vue之axios篇 拦截器

    axios里面可以设置拦截器 ,可以在我们正式请求发送之前做一些事情拦截器分请求(request)拦截器和响应(r...

网友评论

      本文标题:请求拦截器 与 响应拦截器(Vue)

      本文链接:https://www.haomeiwen.com/subject/qvruprtx.html