React+JS,请求简易封装

2 篇文章 0 订阅
import axios from "axios";

const timeout = 60000; // 请求超时时间和延迟请求超时时间统一设置
const config = {
    baseURL: '接口前缀',
    timeout,
    headers: {
        "Content-Type": "application/json",
        "Authorization": sessionStorage.getItem("token")
    }
};


const instance = axios.create(config);

instance.interceptors.request.use(async (config) => {
    if (!config.extraConfig?.tokenRetryCount) {
        config.extraConfig = {
            tokenRetryCount: 0,
        };
    }
    (config.headers)["Authorization"] = sessionStorage.getItem("token");
    return config;
});


 /**
  * http response 拦截器
  */
instance.interceptors.response.use(

    (response) => {
        return response.data;
    },
    async (err) => {

        if (axios.isCancel(err)) {
            // 取消的请求,不报错
            return;
        }
        if (err.message === "Network Error") {
            console.log("Network Error");
            return;
        }
        if (err.message.includes("timeout")) {
            return;
        }
        if (err.response?.status >= 500) {
            return;
        }

        const { data: responseData } = err.response || {};
        const { status } = responseData || {};
        if (status) {
            switch (parseInt(status)) {
                case 4001:
                    break;
                default:
                    break;
            }
        }
        return err.response;
    }
);

const get = (url, params, responseType) => {

    return instance.get(url, { params, ...responseType });
}
const post = (url, data, config) => {

    return instance.post(url, data, config);
}
const del = (url, params) => {
    return instance.delete(url, { params });
}
const put = (url, data) => {
    return instance.put(url, data);
}
// const upload = (url, data)=> {
//     return instance.post(url, data,{headers: {
//         'Content-Type': 'multipart/form-data'
//       }});
// }
export { get, post, del, put };

2.api统一接口封装

import { get, post } from './requer.js';



/**
 * 获取首页列表
 */
export const logindata = (data) => {
    return post('接口后缀', data);
}

页面使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值