axios封装

  • 项目中axios的封装,记录一下免得忘记了。
/*
 * @Author: Chris 
 * @Date: 2022-07-26 14:52:45 
 * @Last Modified by: Chris
 * @Last Modified time: 2022-09-19 09:43:10
 */

import axios from "axios";
import Vue from "vue";

// 方法1:直接修改Axios实例上defaults属性,主要用来设置通用配置
axios.defaults.headers["Content-type"] = "application/json";

let HUBservice = axios.create({
    baseURL: process.env.VUE_APP_HUB,
    timeout: 50000 // 请求超时时间
});

let service = axios.create({
    baseURL: process.env.VUE_APP_URL,
    timeout: 50000 // 请求超时时间
});

const error = err => {
    if (err.response) {
        switch (err.response.status) {
            case 500:
                break;
            case 403:
                break;
            case 60006:
                break;
            case 401:
                window.localStorage.removeItem("UM_accessToken");
                break;
        }
    }
    return Promise.reject(err);
};

// 请求拦截 可在请求头中加入token等
service.interceptors.request.use(config => {
    config.headers["Content-type"] = "application/json";
    if (window.localStorage.getItem("UM_accessToken")) {
        config.headers["accessToken"] = window.localStorage.getItem("UM_accessToken");
    }
    return config;
}, error);

/**
 * HUB的错误返回
 * */

HUBservice.interceptors.response.use(res => {
    if (res.data.code == 0 || res.data.code == -1 || res.data.code == 401 || res.data.code == 500 || res.data.code == 6001) {
        Vue.prototype.$notify.error({
            title: '错误',
            message: res.data.msg
        })
        return res;
    } else {
        return res;
    }
}, error);


/**
 * 用户管理系统的接口过滤
 * */

service.interceptors.response.use(res => {

    if (res.data.code == 0 || res.data.code == -1 || res.data.code == 401 || res.data.code == 500) {
        Vue.prototype.$notify.error({
            title: '错误',
            message: res.data.msg
        })
        return res;
    } else if (res.data.code == 5004) {

        /**
         * 登录过期
         * */

        window.localStorage.removeItem("UM_accessToken");
        window.localStorage.removeItem("UM_USER_IDENTITY");
        Vue.prototype.$notify.error({
            title: '错误',
            message: res.data.msg
        })
        setTimeout(() => {
            location.href = "/login";
            return
        }, 2000);
        return res;
    } else {
        return res;
    }
}, error);


/**
 * get方法 所以如果有参数 且参数类型为Array 
 * 则转换为"1, 2, 3"的字符串形式
 * */

export function get(url, params) {
    if (params) {
        Object.keys(params).forEach(key => {
            if (Array.isArray(params[key])) {
                params[key] = params[key].toString();
            }
        });
    }
    return new Promise((resolve, reject) => {
        service
            .get(url, {
                params: params
            })
            .then(res => {
                resolve(res.data);
            })
            .catch(err => {
                reject(err.data);
            });
    });
}

export function post(url, params) {
    return new Promise((resolve, reject) => {
        service
            .post(url, params)
            .then(res => {
                resolve(res.data);
            })
            .catch(err => {
                reject(err.data);
            });
    });
}

/**
 * 认证中心请求
 * */

export function HUBget(url, params) {
    if (params) {
        Object.keys(params).forEach(key => {
            if (Array.isArray(params[key])) {
                params[key] = params[key].toString();
            }
        });
    }
    return new Promise((resolve, reject) => {
        HUBservice
            .get(url, {
                params: params
            })
            .then(res => {
                resolve(res.data);
            })
            .catch(err => {
                reject(err.data);
            });
    });
}

export function HUBpost(url, params) {
    return new Promise((resolve, reject) => {
        HUBservice
            .post(url, params)
            .then(res => {
                resolve(res.data);
            })
            .catch(err => {
                reject(err.data);
            });
    });
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值