Vue ajax Axios 二次封装,请求拦截器,相应拦截其

 涵盖基础地址、判断是否有token、解析data、请求拦截器、响应拦截器

import axios from 'axios'
import store from '@/store'

export const baseURL = 'www.baidu.com'
const instance = axios.create({
  baseURL,
  timeout: 5000
})

// 请求拦截器
instance.interceptors.request.use(config => {
  const profile = store.state.user.profile
  if (profile && profile.token) {
    config.headers.authorization = 'Bearer ' + profile.token
  }
  return config
}, err => Promise.reject(err))

// 响应拦截器
instance.interceptors.response.use(config => {

  return config.data
}, err => Promise.reject(err))

/**
 * @param { String } url url地址 
 * @param { String } method 方法名 -> get post
 * @param { Object } submitData 传递的参数 -> 对象
 */

export default (url, method, submitData) => {
  return instance({
    url,
    method,
    [method.toLowerCase() === 'get' ? 'params' : 'data']: submitData
  })
}

猜你喜欢

转载自blog.csdn.net/Kerwin__li/article/details/128976819