在axios中设置方法防止http重复请求

可以在封装的 Axios 中设置方法来防止 HTTP 的重复请求。一种常见的方法是通过设置一个标识符,在发送请求前检查该标识符,如果之前已经有相同的请求正在进行,则取消当前请求或者等待上一个请求完成后再发送新请求。这种方式可以有效地避免重复请求的问题。

以下是一个简单的示例代码,演示如何在封装的 Axios 中实现防止重复请求:

javascript 复制代码
import axios from 'axios';

// 创建一个用于存储请求标识符的变量
let pendingRequests = {};

const instance = axios.create({
    // 配置axios实例
});

instance.interceptors.request.use(function (config) {
    // 生成唯一标识符
    const requestId = config.url + JSON.stringify(config.params);

    // 如果该请求已存在,则取消当前请求
    if (pendingRequests[requestId]) {
        config.cancelToken = new axios.CancelToken(cancel => {
            cancel('Duplicate request detected');
        });
    } else {
        // 否则将请求标识符记录下来
        pendingRequests[requestId] = true;
    }

    return config;
}, function (error) {
    return Promise.reject(error);
});

instance.interceptors.response.use(function (response) {
    // 在请求结束时移除该请求的标识符
    const requestId = response.config.url + JSON.stringify(response.config.params);
    delete pendingRequests[requestId];

    return response;
}, function (error) {
    return Promise.reject(error);
});

export default instance;

在这个示例中,通过拦截器在发送请求前检查请求标识符,如果已经存在相同的请求标识符,则取消当前请求;在请求结束后再删除该请求标识符。这样可以确保同一请求不会被同时发起多次。当然,具体的实现方式还可以根据项目的需求和复杂度进行调整和扩展。

相关推荐
虎头金猫5 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
wuyk5555 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
XUEYUAN52125 天前
ASN 自治系统号风控:平台如何通过 IP 所属自治域批量识别代理流量
python·网络协议·http·网络安全·socks5
QYRdata5 天前
年均增速24.2%!机器人数据湖未来六年增长动能强劲
网络·机器人·服务发现
CHENKONG_CK5 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
chshang19925 天前
工业路由器是什么?浅谈5G工业网络中的IR602
网络·物联网·5g·智能路由器
萧瑟余晖5 天前
Netty 核心组件与 Reactor 模型详解
网络·架构
ITxiaobing20235 天前
IP 定位服务选型指南:从准确率到工程落地的技术考察
linux·服务器·网络
wuyk5555 天前
【Socket 进阶之路】第 9 章 Linux 网络服务量产稳定性优化|心跳保活、TIME_WAIT、SO_LINGER、内存池、断线重连、完整异常防护框架
linux·服务器·开发语言·网络·物联网
z落落5 天前
C#UDP+串口服务端+UDP 客户端(含 CRC16 校验)
网络·网络协议·udp