axios_interceptors/index.js

import cavar_type from "../cavar_type";
/**
 * 功能:axios的interceptors的request&response的二次封装
* @param {axios} instance - axios实例话对象
* @param {object} [task] - 配置对象有四个参数<br/> 1.request_sucss[请求成功回调] 参数类型:[function]<br/> 2.request_error[请求失败回调] 参数类型:[function]<br/>  3.response_sucss[响应成功回调] 参数类型:[function]<br/>  4.response_error[响应失败回调] 参数类型:[function]
* @returns {undefined} - undefined
 */

function axios_interceptors(instance, task = {}) {
    if (instance && cavar_type(task) === "object") {
      const request_sucss =
        task.request_sucss ||
        ((config) => {
          console.log(config);
          return config;
        });
      const request_error =
        task.request_error ||
        ((error) => {
          alert("请求失败" + error.message || "未知错误");
          return new Promise.reject(new Error("failed:", error)); //中断promise链
        });
      const response_sucss =
        task.response_sucss ||
        ((response) => {
          //3 返回的响应不再需要从data属性当中拿数据,而是响应就是我们要的数据
          return response.data;
        });
      const response_error =
        task.response_error ||
        ((error) => {
          alert("响应失败" + error.message || "未知错误");
          return new Promise.reject(new Error("failed:", error)); //中断promise链
        });
      // 请求
      instance.interceptors.request.use(request_sucss, request_error);
      // 响应
      instance.interceptors.response.use(response_sucss, response_error);
    } else {
      let num;
      if (!instance && cavar_type(task) !== "object") {
        num = "arguments";
      } else if (!instance) {
        num = "first";
      } else if (cavar_type(task) !== "object") {
        num = "second";
      }
      console.error(
        new Error("axios_interceptors: " + num + " is not, you is sb")
      );
    }
  }
  export default axios_interceptors;