Vue拦截器vue-resource 使用详解

更新时间:2019-07-30 11:37:48 点击次数:1212次
使用拦截器统一处理headers,需要的朋友可以参考下,希望能帮助到大家。
1、安装 axios , 命令: npm install axios --save-dev
2.在接口中获取adminToken:

 methods: {
    async lanjie () {
      let res = await apiAddress()
      this.$store.commit('LOGIN', res.data.data) // 把token存储起来
    }
  }

3.使用vuex,需要在main.js文件里注册store文件

import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  template: '<App/>',
  components: { App }
})

4.store.js里对获取的adminToken进行存储

import Vue from 'vue'
import vuex from 'vuex'
Vue.use(vuex)

export default new vuex.Store({
  state: {
    token: window.sessionStorage.getItem('token')   //在state里使用
  },
  mutations: {
    LOGIN: (state, data) => {
      // 更改token的值
      state.token = data
      window.sessionStorage.setItem('token', data)  // 存到sessionStorage中
    }
  }
})

5、新建文件 axios.js ,内容如下:

import axios from 'axios'
import store from '../src/store'   //引入store文件
import QS from 'qs'   //引入QS

axios.defaults.baseURL = 'https://www.easy-mock.com/'

// 添加请求拦截器

axios.interceptors.request.use(function (config) {
    if (store.state.token) {
      config.headers.adminToken = store.state.token;
    }
// 在发送请求之前设置好统一的admingToken

return config

}, function (error) {

// 对请求错误做些什么

return Promise.reject(error)

});

// 添加响应拦截器

axios.interceptors.response.use(function (response) {

// 对响应数据做点什么

return response

}, function (error) {

// 对响应错误做点什么

return Promise.reject(error)

});
/**
 * 封装post请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function post (url, params) {
  return new Promise((resolve, reject) => {
    axios.post(url, QS.stringify(params))
      .then(res => {
        resolve(res.data)
      })
      .catch(err => {
        reject(err.data)
      })
  })
}

6.为了避免接口在各个页面调取混乱,统一api接口处理:

/**
 * api接口统一管理
 */
import {post} from './axios'

export const apiAddress = () => post('mock/5cdd764ffd487e51be5eb0d2/example/adminToken')
//注意:apiAddress 函数参考序号2的apiAddress 

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!