axios二次封装 详细注释

import axios from "axios"; //axios二次封装
import { Message } from "element-ui"; //引入element提示框
//简单封装一下提示框
const messbox = (txt, time = 1000) => {
    Message({
        showClose: true,
        message: txt,
        type: "error",
        duration: time
    });
};

// 创建axios实例,以免覆盖原来的axios
const v2api = axios.create({ timeout: 10000 });
//post请求的时候,需要加上一个请求头,所以在这统一加了
v2api.defaults.headers.common["Content-Type"] =
    "application/x-www-form-urlencoded";
v2api.defaults.transformRequest = data => {
    return JSON.stringify(data);
};
// 返回状态拦截,进行状态的集中判断
v2api.interceptors.response.use(
    response => {
        const res = response.data;
        if (res.success) {
            return Promise.resolve(res);
        } else {
            // 这里自己设置一些内部错误码处理
            if (res.code === 999) {
                messbox(res.message || "登录已过期,请重新登录!");
                /*router.replace({ path: `${BASE_URL}/login` });*/
            } else {
                // 默认的错误提示(不设置success/success=""就会出来)
                messbox(res.message || "网络异常,请稍后重试!");
            }
            return Promise.reject(res);
        }
    },
    error => {
        if (/timeout\sof\s\d+ms\sexceeded/.test(error.message)) {
            // 超时
            messbox("网络出了点问题,请稍后重试!");
        }
        if (error.response) {
            // 这里设置默认返回的http状态码判断
            switch (error.response.status) {
                // http status handler
                case 404:
                    messbox("请求的资源不存在!");
                    break;
                case 405:
                    messbox("请求的资源施工中!");
                    break;
                case 500:
                    messbox("内部错误,请稍后重试!");
                    break;
                case 503:
                    messbox("服务器正在维护,请稍等!");
                    break;
            }
        }
        return Promise.reject(error.response);
    }
);

// 处理get请求
const get = (url, params, config = {}) => v2api.get(url, {...config, params });
// 处理delete请求,为了防止和关键词delete冲突,方法名定义为deletes
const deletes = (url, params, config = {}) =>
    v2api.delete(url, {...config, params });
// 处理post请求
const post = (url, params, config = {}) => v2api.post(url, params, config);
// 处理put请求
const put = (url, params, config = {}) => v2api.put(url, params, config);
export default {
    get,
    deletes,
    post,
    put
};

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值