一个超好用的Axios二次封装(one day 了解axios)

144 阅读1分钟

封装一个Axios

首先我们看下原生axios的请求是什么样的

axios('http://localhost:3000/data', {
        method: 'GET',
        timeout: 1000,
        withCredentials: true,
        headers: {
            'Content-Type': 'application/json',
            Authorization: ''Bearer' + getToken(),
        },
        transformRequest: [function(data, headers) {
            return data;
        }],
        // 其他请求配置...
    })
    .then((data) => {
        // todo: 真正业务逻辑代码
        console.log(data);
    }, (err) => {
        if (err.response.status === 401) {
            // handle authorization error
        }
        if (err.response.status === 403) {
            // handle server forbidden error
        }
        // 其他错误处理.....
        console.log(err);
    });

小结:我们可以知道,使用axios发送一个请求需要配置

  • 请求地址:url:你要请求的地址

  • 请求方式:method:你的请求方式

  • 设置超时:timeout:设置超时时间

  • 跨域请求时是否需要使用凭:withCredentials:开启withCredentials后,服务器才能拿到你的cookie,当然后端服务器也要设置允许你获取你开启了才有用

  • 请求头:headers :

    • Content-Type:设置请求数据格式,告诉服务器我传的什么类型
      • Content-Type: application/json : 请求体中的数据会以json字符串的形式发送到后端
      • Content-Type: application/x-www-form-urlencoded:请求体中的数据会以普通表单形式(键值对)发送到后端
      • Content-Type: multipart/form-data: 它会将请求体的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件
  • 设置Cookie: Authorization :把cookie放在这个位子

  • 请求预处理函数:transformRequest :请求转换数据类型,post请求的data一般都是一个obj,后端只能解析url字符串,可以在这个地方统一转换

  • 请求成功: .then :这里面操作数据

  • 错误信息:(err):这里面通过判断错误状态码,做出相应的操作