浅谈Vue网络请求之拦截器实际应用

  

<强>项目背景
  

  

最近在项目开发中,遇到下面这样一个问题:

  
      <李>在进行铭感操作之前,每个请求需要携带令牌,但是令牌有有效期,令牌失效后需要换取新的令牌并继续请求。   
  

需求分析

  
      <李>每个请求都需要携带令牌,所以我们可以使用axios请求拦截器,在这里,我们给每个请求都加标记,这样就可以节省每个请求再一次次的复制粘贴代码。   <李>牌失效问题,当我们令牌失效,我们服务端会返回一个特定的错误表示,比如令牌无效,但是我们不能在每个请求之后去做刷新令牌的操作呀,所以这里我们就用axios响应拦截器,我们统一处理所有请求成功之后响应过来的数据,然后对特殊数据进行处理,其他的正常分发。   
  

<强>功能实现
  

  

分析完问题后,我们来实现功能

  

安装axios,这里我们就赘述怎么安装axios。
  

  

在主要。js注册axios
  

        Vue.use (Vuex)   Vue。使用(VueAxios axios)   Vue.use (qs)      

注:qs,使用axios,必须得安装qs,所有的帖子请求,我们都需要qs,对参数进行序列化。
  

  

在请求拦截器实现
  

        axios.interceptors.request.use (   配置=比;{   配置。baseURL='/api/'   配置。withCredentials=true//允许携带令牌,这个是解决跨域产生的相关问题   配置。超时=2500   让牌=sessionStorage.getItem (“access_token”)   让csrf=store.getters.csrf   如果(令牌){   配置。头={   “访问令牌”:令牌,   “内容类型”:“应用程序/x-www-form-urlencoded”   }   }   如果(配置。url===八⑿隆?{   配置。头={   “refresh-token”: sessionStorage.getItem (“refresh_token”),   “内容类型”:“应用程序/x-www-form-urlencoded”   }   }   返回配置   },   错误=比;{   返回Promise.reject(错误)   }   )      

在响应拦截器实现
  

        axios.interceptors.response.use (   响应=比;{//定时刷新访问令牌   如果(! response.data。价值,,response.data.data。信息===傲钆莆扌А?{//刷新令牌   store.dispatch(“更新”)。(反应=比;{   sessionStorage。setItem (access_token, response.data)   })。抓住(错误=比;{   把新的错误(“令牌刷新' +错误)   })   }   返回响应   },   错误=比;{   返回Promise.reject(错误)   }   )      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

浅谈Vue网络请求之拦截器实际应用