vue+axios全局添加请求头和参数

走登录的接口都会返回一个token值,然后存起来方便之后调接口的时候给后台传过去,传给后台的方式有两种:(具体使用哪种需要和后台商量)

  • 1、放在请求头中
  • 2、放在接口的参数中

放在请求头中

下面代码是从本地cookie中拿token
VueCookie:一个用于处理浏览器cookies的简单Vue.js插件.

// 在封装axios的文件中添加拦截器
// 添加请求拦截器,在请求头中加token
service.interceptors.request.use(
  config => {
    // 判断本地的cookie中是否有token
    if (VueCookie.isKey('token')) {
      config.headers.Authorization = VueCookie.get('token')
    } else {
      // 跳转到登录页面(这里使用router,是因为路由文件引入到了此文件里)
      router.push('/login')
    }
    return config
  },
  error => {
    return Promise.reject(error)
  })

放在参数中

以下代码是从本地存储localStorage中拿token

// 添加请求拦截器,在参数中加token
service.interceptors.request.use(
  config => {
    // 将token添加到每一个接口的参数中
    // 判断请求的类型:如果是post请求就把默认参数拼到data里面;如果是get请求就拼到params里面
    const token = localStorage.getItem('ISTOKEN')
    if (localStorage.getItem('ISTOKEN')) {
      // 注意:config.method 的判断值必须是小写的post和get
      if (config.method === 'post') {
        config.data = {
          api_token: token,
          ...config.data
        }
      } else if (config.method === 'get') {
        config.params = {
          api_token: token,
          ...config.params
        }
      }
    } else {
      // 跳转到登录页面(这里使用router,是因为路由文件引入到了此文件里)
      router.push('/login')
    }
    return config
  },
  error => {
    return Promise.reject(error)
  })

你可能感兴趣的:(vue,ajax)