• vue项目中写拦截器(axios)


    利用axios中的request和response写拦截器,方便统一处理项目中后续的接口请求和响应 

    request.js

    import axios from 'axios'
    import { Message, MessageBox } from 'element-ui' //用于处理请求或响应的提示
    import store from '../store' //vuex中存储了token
    import { getToken } from '@/utils/auth'
    
    // 创建axios实例
    const service = axios.create({
      baseURL: process.env.BASE_API, // api的base_url
      timeout: 10000 // 请求超时时间10s
    })
    // request拦截器
    service.interceptors.request.use(config => {
      if (store.getters.token) {
        config.headers['X-Token'] = getToken() 
      // 让每个请求携带自定义token 请根据实际情况自行修改   }   if (config.data !== undefined && config.data !== null) {     config.data = removeSpaces(config.data)   }
     //这个config一定要return出去   
    return config }, error => { //index.push({path:'/error'}) //请求错误时调用页面   Promise.reject(error) }) // respone拦截器 service.interceptors.response.use(   response => {     const res = response.data     if (res.status !== '200') {       if (res.status === '401') {         //根据实际处理       } else {
         //eg:         Message({           message: res.message,           type: 'error',           duration: 5 * 1000         })       }       return Promise.reject('error')     } else if (res.errorCode != null) {       Message({         message: res.errorCode,         type: 'error',         duration: 5 * 1000       })     } else {       return response.data     }   },   error => {     Message({       message: error.message,       type: 'error',       duration: 5 * 1000     })     return Promise.reject(error)   } )
    //清除空格
    function removeSpaces(data) {
      if (data == null || data === undefined) {
        return data
      }
      if ((typeof data) === 'string') {
        return data.trim()
      } else if ((typeof data) === 'object') {
        for (const i in data) {
          data[i] = removeSpaces(data[i])
        }
        return data
      } else {
        return data
      }
    }
    export default service

    后续的接口封装中,引入这个request.js文件

  • 相关阅读:
    (六)静态域,静态方法和静态代码块
    (五)final修饰符
    (四)函数的参数传递——值传递
    (三)java字符串
    第二章 shell的语法
    字符串操作
    PropertyGrid—属性类别排序
    PropertyGrid—为复杂属性提供下拉式编辑框和弹出式编辑框
    PropertyGrid--为复杂属性提供编辑功能
    PropertyGrid—添加EventTab
  • 原文地址:https://www.cnblogs.com/wcx-20151115-hzz/p/14984772.html
Copyright © 2020-2023  润新知