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

  • 相关阅读:
    javascript base64 encode decode 支持中文
    php laravel v5.1 消息队列
    Linux C语言 取得MTU (最大传输单元)
    javascript 字符串 数字反转 字母大小写互换
    为Python安装Redis库
    php 日期相关的类 DateInterval DateTimeZone DatePeriod
    php安全 过滤、验证、转义
    python学习笔记之---多种方式实现list去重
    Python函数重载机制?
    说说下面几个概念:同步,异步,阻塞,非阻塞?
  • 原文地址:https://www.cnblogs.com/datiangou/p/10121702.html
Copyright © 2011-2022 走看看