在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;

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

相关推荐
爱和冰阔落2 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
严肃小白兔3 小时前
Cloudflare 更新 API Token 管理:从最小权限到自动化凭据安全
网络·安全·自动化
Linux-lucky15 小时前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
博客zhu虎康19 小时前
实现局域网P2P通信:内网发送消息
网络·网络协议·p2p
吴声子夜歌20 小时前
Kubernetes权威指南——网络原理(一)
网络·容器·kubernetes
陈希12320 小时前
Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位
linux·服务器·网络
国科安芯21 小时前
从遥控到自治:ASP4644S2B支撑星载电源健康管理与容错配电
网络·单片机·嵌入式硬件·安全·dcdc·低轨卫星·商业航天
|_⊙1 天前
网络层协议 IP
服务器·网络·tcp/ip
无言听风雨丶1 天前
Kubernetes Service Mesh 与 mTLS 实战:从网络可达走向零信任服务通信
网络·kubernetes·service_mesh
叼烟扛炮1 天前
Linux 学习笔记(六十):单线程的逆袭——epoll 高并发服务器实战
linux·服务器·网络·笔记·学习·算法