• Vue axios封装一


    我们搭建一个Vue前端系统时,必须对axios封装,

    第一步:请求过滤,添加token

    axios.interceptors.request.use(config => {
         LoadingBar.start();
        let method = config.method.toLocaleLowerCase();
    
        if (method === 'post') {
          config.params = processParam(config.params);
          let user = getUser();
          user && user.access_token && (config.params['access_token'] = user.access_token);
          return config;
        }
    
        if (method === 'get') {
          config.params = config.params || {};
          let user = getUser();
          user && user.access_token && (config.params['access_token'] = user.access_token);
          return config;
        }
        return config;
      },
      error => {
        return Promise.reject(error);
      }
    );
    

      

    export const requestInterceptors = config => {
      setHeader(config.headers)
    
      if (config.method.toLowerCase() === 'get') {
        config.params = processParams(config.params)
      } else {
        // 解决后端需要form-data形式传参问题
        config.data = qs.stringify(processParams(config.data))
      }
    
      return config
    }
    

      

     axios.interceptors.request.use(requestInterceptors)

    第二步:回调过滤

    axios.interceptors.response.use(response => {
        return response.data;
      },
      error => {
        LoadingBar.error();
        if (error.response) {
          switch (error.response.status) {
            case 401:
              // 返回 401 清除token信息并跳转到登录页面
              Storage.removeAll(true);
              router.replace({
                path: 'login',
              });
    
              break;
            case 500:
              // 返回 500
              Message.error(CONSTANT.HTTP_STATUS.SERVER_ERROR.MSG);
              break;
          }
        }
        return Promise.reject(error)
      }
    );
    //请求拦截器
    axios.interceptors.request.use(config => {
    // LoadingBar.start();
    let method = config.method.toLocaleLowerCase();

    if (method === 'post') {
    config.params = processParam(config.params);
    let user = getUser();
    user && user.access_token && (config.params['access_token'] = user.access_token);
    return config;
    }

    if (method === 'get') {
    config.params = config.params || {};
    let user = getUser();
    user && user.access_token && (config.params['access_token'] = user.access_token);
    return config;
    }
    return config;
    },
    error => {
    return Promise.reject(error);
    }
    );
  • 相关阅读:
    总结!!!总结!!!
    Beta 总结
    BETA-7
    BETA-6
    BETA-5
    BETA-4
    BETA-3
    华为云-软件产品案例分析
    BETA-2
    BETA-1
  • 原文地址:https://www.cnblogs.com/tylz/p/11858373.html
Copyright © 2020-2023  润新知