zoukankan      html  css  js  c++  java
  • 细说vue axios登录请求拦截器

    当我们在做接口请求时,比如判断登录超时时候,通常是接口返回一个特定的错误码,那如果我们每个接口都去判断一个耗时耗力,这个时候我们可以用拦截器去进行统一的http请求拦截。

    1.安装配置axios

    
    cnpm install --save axios
    

    我们可以建一个js文件来做这个统一的处理,新建一个axios.js,如下

    
    import axios from 'axios'
    import { Indicator } from 'mint-ui'; 
    import { Toast } from 'mint-ui'; 
    // http request 拦截器 
    axios.interceptors.request.use( 
      config => { 
        Indicator.open() 
        return config; 
      }, 
      err => { 
        Indicator.close() 
        return Promise.reject(err); 
      }); 
    // http response 拦截器 
    axios.interceptors.response.use( 
      response => { 
        Indicator.close() 
        return response; 
      }, 
      error => { 
        Indicator.close() 
      }); //欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860
    export default axios
    

    然后在main.js中引入这个js文件

    
    import axios from './axio'; 
    Vue.prototype.$axios = axios;
    

    这样就可以使用axios去请求了,在组件中可以用this.axios去调用

    
    this.$axios({ 
        url:requestUrl+'homePage/v1/indexNewPropertiesResult', 
        method:'POST', 
       }).then(function(response){ //接口返回数据 
        console.log(response) 
        that.modulesArr=response.data.data.modules; 
    //   that.getRecommendGoods(0); 
       });//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860
    

    只有用axios请求接口,才能去拦截,现在已经能在axios.js中拦截到了,可以在两个状态中做你需要的操作

    补充:

    • axios使用拦截器统一处理所有的http请求
    • axios使用拦截器
    • 在请求或响应被 then 或 catch 处理前拦截它们。

    http request拦截器

    
    // 添加请求拦截器
    axios.interceptors.request.use(function (config) {
      // 在发送请求之前做些什么
      return config;
     }, function (error) {
      // 对请求错误做些什么
      return Promise.reject(error);
     });//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860
    

    http respones拦截器

    
    // 添加响应拦截器
    axios.interceptors.response.use(function (response) {
      // 对响应数据做点什么
      return response;
     }, function (error) {
      // 对响应错误做点什么
      return Promise.reject(error);
     });//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860
    

    移除拦截器

    
    var myInterceptor = axios.interceptors.request.use(function () {/*...*/});
    axios.interceptors.request.eject(myInterceptor);
    

    为自定义axios实例添加拦截器

    
    var instance = axios.create();
    instance.interceptors.request.use(function () {/*...*/});
    

    结语

    感谢您的观看,如有不足之处,欢迎批评指正。

    原文地址:https://segmentfault.com/a/1190000017283733

  • 相关阅读:
    Kettle Spoon 数据源连接中报ORA12505, TNS:listener does not currently know of SID given in connect descriptor的错误
    oracle创建用户和删除用户sql
    Kettle Spoon表输入使用变量
    Kettle Spoon 资源库连接后新建转换打不开,报Invalid byte 1 of 1byte UTF8 sequence异常
    oracle 误删除表/表中数据,恢复方法
    让ie兼容css3新属性backroundsize
    网页设计中为啥少用奇数字体?
    浏览器差异总结,可以用此判断浏览器版本(转)
    ie浏览器f12下调“浏览器模式”和“文档模式”的区别
    jquery的淡入淡出和隐藏,展示函数在ie中应用的bug
  • 原文地址:https://www.cnblogs.com/datiangou/p/10121702.html
Copyright © 2011-2022 走看看