zoukankan      html  css  js  c++  java
  • 前端快闪四: 拦截axios请求和响应

    马甲哥继续在同程艺龙写一点大前端:

    今天我们来了解一下 如何拦截axios请求/响应?

    axios是一个基于 promise 的网络请求库,可以用于浏览器和 node.js, promise 类似于C#的Task async/await机制,以同步的代码风格编写异步代码。

    axios一般发起的是ajax请求,我们一般会封装处理一些通用的 请求/响应动作。

    比如马甲哥就遇到:

    1. 在每次ajax跨域请求时,允许携带第三方凭据(cookie、authorization)
    2. 封装4xx响应码的处理逻辑

    其中关键的就是用到axios的拦截器:

    export interface AxiosInterceptorManager<V> {
      use<T = V>(onFulfilled?: (value: V) => T | Promise<T>, onRejected?: (error: any) => any): number;
      eject(id: number): void;
    }
    

    仔细围观usesdk,支持传入两个函数,
    表示请求(响应)一旦准备好了/失败了,你可以注入的动作。

    精简代码如下:

    import axios from 'axios';
    import {
        message
      } from 'antd'
    
    const service = axios.create({
        baseURL: process.env.REACT_APP_APIBASEURL, 
        timeout: 5000
    })
    // 添加请求拦截器: 这是向后台服务器发起的ajax请求
    service.interceptors.request.use((reqconfig) => {
        reqconfig.withCredentials = true;
        return reqconfig;
    }, (error) => {
        return Promise.reject(error);
    });
    
    // 添加响应拦截器
    service.interceptors.response.use((response) => {
        return response;
    }, (error) => {
        if (error.response && error.response.status === 401) {
            message.error("无权限操作,请联系tvs运维.")
        }
        return Promise.reject(error);
    });
    

    以上对于前端老鸟不值一提,但是上述拦截动作对于把握全栈web开发必不可少。


    本文来自博客园,作者:{有态度的马甲},转载请注明原文链接:https://www.cnblogs.com/JulianHuang/p/15386779.html

    欢迎关注我的原创高价值公众号

    上海鲜花港 - 郁金香
  • 相关阅读:
    box-sizing
    max-width
    如何编写高质量CSS
    CSS文字大小单位PX、EM、PT
    jQuery设计思想
    pageX,clientX,offsetX,layerX的那些事
    html块级元素和内联元素区别详解
    centos彻底删除mysql
    删:[CentOS 7] 安装nginx
    CentOS7.0安装与配置Tomcat-7
  • 原文地址:https://www.cnblogs.com/JulianHuang/p/15386779.html
Copyright © 2011-2022 走看看