axios封装

import axios from "axios";
import store from "@/store";
import router from "../router";
// import config from "@/config";  //基础配置,这里我就不展示就是拼接两个对象,你也可以注释掉
import { Message } from "element-ui";

// 获取登陆后存在cookie中的token
 function getToken(){
  return Cookies.get(TOKEN_KEY);
};


const service = axios.create({
  baseUrl:
    process.env.NODE_ENV === "development"
      ? config.baseUrl.dev
      : config.baseUrl.pro,
  timeout: 5 * 1000
});

// 关闭全局的loading,存在store里面的一个loaing,大家可以不用(访问一次接口就loading一下那种下过而已)
// function closeGlobalLoading() {  
//   if (store.state.app.globalLoading) {
//     store.commit("SET_GLOBAL_LOADING", false);
//   }
// }
// 弹出错误提示
function showErrMsg(errorMsg) {
  Message({
    type: "error",
    showClose: true,
    message: errorMsg,
    duration: 5 * 1000
  });
}

// request拦截器
service.interceptors.request.use(
  config => {
    let token = getToken();
    if (token) {
      config.headers["Authorization"] = token;
    }
    return config;
  },
  error => {
    Promise.reject(error);
  }
);

const whiteList = [200]; // code白名单 非200即当作异常处理
// const ridrectCode = [2134001, 2134002, 2134012]; // token失效的情况需重定向

// respone拦截器
service.interceptors.response.use(
  response => {
    // setTimeout(() => {
    //   closeGlobalLoading(); // 关闭全局loading
    // }, 100);

    const { data } = response;

    if (whiteList.includes(data.code)) {
      return data;
    } else {
      // if (ridrectCode.includes(data.code)) {
      //   // token失效时,清除当前用户登录信息并重定向到登录页
      //   store.dispatch("user/clearLoginInfo").then(() => {
      //     router.push(`/login?redirect=${router.history.current.path}`);
      //   });
      // }

      showErrMsg(`[  ${data.code}  ] ${data.message}`);
      return Promise.reject(data.message);
    }
  },
  error => {
    // closeGlobalLoading();
    let errorMsg = error.message;
    if (error.response) {
      // 请求已发出,但服务器响应的状态码不在 2xx 范围内
      console.log(error.response.data);
      showErrMsg("服务器异常,请联系管理员!");
    } else {
      // 服务器没有响应
      console.log("server", errorMsg);
      showErrMsg("请求超时,请刷新重试!");
    }
    return Promise.reject(errorMsg);
  }
);

export default service;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值