axios封装错误请求

2025-03-24 15

《axios封装错误请求》

在使用axios进行网络请求时,难免会遇到错误请求的情况。解决方案是通过封装axios,统一处理错误请求,从而简化业务代码中的错误处理逻辑,并且可以针对不同类型的错误做出合适的响应。

一、通过处理

我们可以利用axios的来捕获错误请求。

javascript
const axiosInstance = axios.create({
    baseURL: 'https://example.com/api',
    timeout: 5000
});</p>

<p>// 请求
axiosInstance.interceptors.request.use(
    config => {
        // 可以在发送请求之前做些什么,比如添加token等操作
        return config;
    },
    error => {
        // 对请求错误做些什么
        console.log('请求错误:', error);
        return Promise.reject(error);
    }
);</p>

<p>// 响应
axiosInstance.interceptors.response.use(
    response => {
        // 对响应数据做点什么
        return response.data;
    },
    error => {
        // 对响应错误做点什么
        if (error.response) {
            // 请求已发出,但服务器响应的状态码不在 2xx 范围内
            switch (error.response.status) {
                case 401:
                    // 处理未授权
                    break;
                case 403:
                    // 处理禁止访问
                    break;
                case 404:
                    // 处理找不到资源
                    break;
                case 500:
                    // 处理服务器内部错误
                    break;
                default:
                    console.log('其他响应错误:', error.response.data);
            }
        } else if (error.request) {
            // 请求已发出,但没有收到响应
            console.log('没有收到响应:', error.request);
        } else {
            // 其他情况
            console.log('其他错误:', error.message);
        }
        return Promise.reject(error);
    }
);

二、定义自定义错误类

为了更清晰地处理不同类型错误,还可以定义自定义错误类。

javascript
class ApiError extends Error {
    constructor(status, message) {
        super(message);
        this.status = status;
    }
}</p>

<p>axiosInstance.interceptors.response.use(response => response.data, error => {
    if (error.response) {
        const {status, data} = error.response;
        throw new ApiError(status, data.message || '未知错误');
    }
    throw error;
});

然后在调用的地方就可以根据这个自定义错误类来进行更精确的处理了。

这两种思路都可以很好地封装axios的错误请求,开发者可以根据项目的实际需求选择合适的方式,让项目中的网络请求错误处理更加规范和高效。

Image

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载