vue接口封装请求响应拦截器

 

request.js

import axios from 'axios'
import {getToken,GetQueryString} from '@/utils/auth'
import { Notification, MessageBox, Message } from 'element-ui'
const service = axios.create({
  baseURL: configBase.baseURL,
  headers: {
    'content-type': 'application/json',
    'token':  getToken()?getToken():GetQueryString('token'),
  },
  // withCredentials: true, // send cookies when cross-domain requests
  timeout: 50000 // request timeout
})
// 添加请求拦截器
service.interceptors.request.use(config => {
    // do something before request is sent
    // console.log('config', config)
    // 是否需要设置 token
    // const isToken = (config.headers || {}).isToken === false
    // if (getToken() && !isToken) {
    //   config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
    // }
    return config
  },
  error => {
    // do something with request error
    // for debug
    return Promise.reject(error)
  })


// 添加响应拦截器
service.interceptors.response.use(response => {
    // 对响应数据做点什么
    if (response.data === '200') {
      if (response.data.code === '1001') {
        // 对响应数据做点什么
      }
    }else{
      
    }
    return response.data
  },
  error => {
    console.log('err' + error)
    let {
      message
    } = error;
    if (message == "Network Error") {
      message = "后端接口连接异常";
    } else if (message.includes("timeout")) {
      message = "系统接口请求超时";
    } else if (message.includes("Request failed with status code")) {
      message = "系统接口" + message.substr(message.length - 3) + "异常";
    }
    Message({
      message: message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  })

export default service

auth.js

import Cookies from 'js-cookie'

const TokenKey = 'Admin-Token'

export function getToken() {
  return Cookies.get(TokenKey)
}

export function setToken(token) {
  return Cookies.set(TokenKey, token)
}

export function removeToken() {
  return Cookies.remove(TokenKey)
}

// 获取url参数
export const GetQueryString=(name)=> { 
  return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ""])[1].replace(/\+/g, '%20')) || null
 
}

api.js引入使用

import axios from '@/axios/request'


export const getBaseType = (params) => {
  return axios({
    url: '/common/baseDataList/baseType',
    method: 'get',
  params:params }) } export const getBaseInfoList = (params) => { return axios({ url: '/common/dataList/baseInfo', method: 'post', data: params }) }

 

posted @ 2021-09-23 09:13  小明明同学  阅读(740)  评论(0编辑  收藏  举报