Spring Boot(6)解决ruoyi框架连续快速发送post请求时,弹出“数据正在处理,请勿重复提交”提醒的问题
一、整个前言
在基于 Ruoyi 框架进行系统开发的过程中,我们常常会遇到各种有趣且具有挑战性的问题。今天,我们就来深入探讨一个在实际开发中较为常见的问题:当连续快速发送 Post 请求时,前端会弹出 “数据正在处理,请勿重复提交” 的提醒,这在某些业务场景下可能并非我们所期望的,要如何绕过它呢?跟我一起来看看吧~
二、问题解决
1、先带你看一下原因
首先找到前端的src/utils/request.js文件,找到其中的这一块:

这就是你连续快速发送post请求,系统会给你弹出提醒的原因。前端默认设置了一个拦截器,当你发送post或put请求的时候,就会默认读取两次请求之间的时间间隔,如果说你连续两次请求时间间隔小于1s,那么系统会判定你是重复提交,并且给你弹出一个提醒。
我们的目标就是要在需要绕过这个提醒的场景下,能够顺利地让请求发送出去,而不被这个检测机制拦截。
2、修改前端请求拦截器代码
解决方案就是在拦截器里添加一个自定义参数,在发送请求时,带上这个参数,就可以跳过拦截器的拦截逻辑,让请求丝滑地发送下去。
首先在request.js文件的第39行后面,加上这样一段代码:
if (config.headers && config.headers.skipRepeatSubmit) {// 如果调用接口时,在headers里手工设置了(skipRepeatSubmit: true)跳过重复提交检查,则直接返回configreturn config;}
现在看起来就是这样了:

这里,我们增加了对skipRepeatSubmit参数值为字符串'true'的判断,如果它是true,就直接返回config,如果不是true,才会继续运行拦截器的校验。这样可以更灵活地适应不同的传参方式。
3、修改请求headers
在需要绕过重复提交提醒的请求中,我们需要在请求头中增加skipRepeatSubmit参数,并设置为true,就不会被拦截了,例如:
// 查询用例列表
export function listTestCase(query) {return request({url: '/projectmanage/testcase/list',method: 'post',data: query,headers: {skipRepeatSubmit: true // 添加跳过重复提交检查的标识}})
}
通过这样的设置,在请求发送时,框架就会根据我们设置的参数,绕过重复提交检测,从而顺利发送请求。快去试试吧!
如果你只是为了解决问题,就不用继续往下看啦!
如果你想要了解原因,可以往下看看!
四、原理探究
(一)重复提交检测机制原理
Ruoyi 框架的重复提交检测机制主要是基于请求的唯一性和时间间隔来实现的。当一个请求发送时,框架会记录下这个请求的相关信息,包括请求的时间、请求的方法、请求的参数等。如果在短时间内接收到相同的请求(这里的相同包括请求方法、请求 URL、请求参数等都相同),框架就会认为这是一次重复提交,进而触发 “数据正在处理,请勿重复提交” 的提醒。这个机制对于大多数正常的业务场景来说是非常实用的,它可以有效地防止用户因为网络延迟等原因,多次点击提交按钮而导致的数据重复提交问题。
(二)跳过参数的作用
我们设置的skipRepeatSubmit参数就像是一把 “钥匙”,当框架检测到这个参数并且其值为true时,就会认为这个请求是特殊的,需要绕过正常的重复提交检测流程。这就好比在一个门禁系统中,正常情况下需要通过身份验证才能进入,而我们的这个参数就像是一张特殊的通行证,持有它就可以直接通过,而不需要经过常规的验证流程。
五、实际应用场景
(一)批量操作
在进行批量数据导入、批量更新等操作时,由于操作涉及的数据量较大,可能需要多次发送 Post 请求。如果每次请求都被重复提交检测机制拦截,那么整个批量操作就无法顺利完成。通过设置skipRepeatSubmit参数,我们可以让这些批量请求顺利发送,提高操作效率。
(二)自动化测试
在进行自动化测试时,测试脚本可能会按照一定的逻辑连续发送多个 Post 请求来模拟用户的操作流程。如果这些请求被重复提交检测机制影响,就会导致测试结果不准确或者测试流程中断。通过绕过这个检测机制,我们可以保证自动化测试的顺利进行。
六、注意事项
(一)数据一致性问题
虽然我们通过设置参数绕过了重复提交检测,但是在实际应用中,一定要确保数据的一致性。特别是在一些对数据准确性要求较高的业务场景下,比如金融交易、库存管理等,要避免因为绕过检测而导致的数据重复提交或者不一致的问题。可以在业务逻辑层增加一些额外的数据校验和处理机制,确保数据的准确性。
(二)参数管理
由于skipRepeatSubmit参数是我们自定义的,在整个项目中要统一管理和使用。在不同的模块或者功能中,要确保对这个参数的理解和使用方式一致,避免因为参数设置不当而导致的问题。同时,也要注意在代码中对这个参数的设置进行合理的注释,以便于后续的维护和开发。
七、总结与展望
通过对 Ruoyi 框架连续快速发送 Post 请求时弹出重复提交提醒问题的分析和解决,我们不仅解决了一个实际开发中的难题,还深入了解了框架的内部机制和原理。在今后的开发中,我们可以根据不同的业务场景,灵活运用这些知识,更好地优化我们的项目。
展望未来,随着技术的不断发展和业务需求的日益复杂,我们可能会遇到更多类似的问题。但是,只要我们掌握了正确的分析和解决问题的方法,就能够从容应对。同时,我们也希望 Ruoyi 框架能够不断完善和优化,提供更多更强大的功能和更灵活的配置,为我们的开发工作带来更多的便利。
希望这篇文章能够对你在 Ruoyi 框架开发中遇到的相关问题有所帮助,如果你有任何疑问或者建议,欢迎随时交流。
✍结尾
🀙🀚🀛🀜🀝🀞🀟🀠🀡🀐🀑🀒🀓🀔🀕🀖🀘🀗🀏🀎🀍🀌🀋🀊🀉🀈🀇🀆🀅🀃🀂🀁🀀🀄︎🀢🀣🀥🀤🀦🀧🀨🀩🀪
📘 妹妹听后点了点头,脸上露出了满意的笑容。她轻声说道:“原来如此,谢谢你,鸽鸽。看来我不仅要多读书,还要多动手实践,提升自己才行。”
看着她那充满求知欲的眼神,我不禁感叹,学习之路虽然充满挑战,但有这样一位美丽聪慧的伙伴相伴,一切都变得格外有意义。快去和妹妹一起实践一下吧!

📘相关阅读⚡⚡
笔者 綦枫Maple 的其他作品,欢迎点击查阅哦~:
📚Jmeter性能测试大全:Jmeter性能测试大全系列教程!持续更新中!
📚UI自动化测试系列: Selenium+Java自动化测试系列教程❤
📚移动端自动化测试系列:Appium自动化测试系列教程
📚Postman系列:Postman高级使用技巧系列
👨🎓作者:綦枫Maple
🚀博客:CSDN、掘金等
🚀CSDN技术社区:https://bbs.csdn.net/forums/testbean
🚀网易云音乐:https://y.music.163.com/m/user?id=316706413
🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。
🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系处理。
🀐其他:若有兴趣,可以加文章结尾的Q群,一起探讨学习哦~
相关文章:
Spring Boot(6)解决ruoyi框架连续快速发送post请求时,弹出“数据正在处理,请勿重复提交”提醒的问题
一、整个前言 在基于 Ruoyi 框架进行系统开发的过程中,我们常常会遇到各种有趣且具有挑战性的问题。今天,我们就来深入探讨一个在实际开发中较为常见的问题:当连续快速发送 Post 请求时,前端会弹出 “数据正在处理,请…...
鸿蒙Harmony json转对象(1)
案例1 运行代码如下 上图的运行结果如下: 附加1 Json_msg interface 案例2 import {JSON } from kit.ArkTS; export interface commonRes {status: numberreturnJSON: ESObject;time: string } export interface returnRes {uid: stringuserType: number; }Entry Component …...
常见的RocketMQ面试题及其简要答案
以下是一些常见的RocketMQ面试题及其简要答案: 一、基础概念与架构 简述RocketMQ是什么,并说明其主要作用。 答案: RocketMQ:是阿里巴巴在2012年开源的一款分布式消息中间件,目前已经捐赠给Apache软件基金会ÿ…...
C#Object类型的索引,序列化和反序列化
前言 最近在编写一篇关于标准Mes接口框架的文章。其中有一个非常需要考究的内容时如果实现数据灵活和可使用性强。因为考虑数据灵活性,所以我一开始选取了Object类型作为数据类型,Object作为数据Value字段,String作为数据Key字段,…...
Unity3D项目开发中的资源加密详解
前言 在Unity3D游戏开发中,保护游戏资源不被非法获取和篡改是至关重要的一环。资源加密作为一种有效的技术手段,可以帮助开发者维护游戏的知识产权和安全性。本文将详细介绍Unity3D项目中如何进行资源加密,并提供相应的技术详解和代码实现。…...
微调Qwen2:7B模型,加入未知信息语料
对于QWen2这样的模型,在微调的时候,语料的投喂格式满足ChatML这样的格式!!! OpenAI - ChatML: 下面是ChatML格式的介绍: https://github.com/openai/openai-python/blob/release-v0.28.0/chatml.mdhttps://github.com/openai/openai-python/blob/release-v0.28.0/chat…...
【Ubuntu】安装SSH启用远程连接
【Ubuntu】安装OpenSSH启用远程连接 零、安装软件 使用如下代码安装OpenSSH服务端: sudo apt install openssh-server壹、启动服务 使用如下代码启动OpenSSH服务端: sudo systemctl start ssh贰、配置SSH(可跳过) 配置文件 …...
【理论】测试开发工程师进阶路线
一、腾讯与阿里的质量保证服务参考 阿里云效测试能力与架构 腾讯 WeTest 测试能力全景图 二、测试开发技术体系 1.用户端测试: Web/App 测试 Web/App 自动化测试 用户端专项测试 用户端安全测试 2.服务端测试: 接口协议与 Mock 接口自动化测试 服务端…...
【BQ3568HM开发板】如何在OpenHarmony上通过校园网的上网认证
引言 前面已经对BQ3568HM开发板进行了初步测试,后面我要实现MQTT的工作,但是遇到一个问题,就是开发板无法通过校园网的认证操作。未认证的话会,学校使用的深澜软件系统会屏蔽所有除了认证用的流量。好在我们学校使用的认证系统和…...
動態住宅IP提升網站訪問成功率
動態住宅IP通常與普通家庭用戶的網路連接相關聯。這種IP地址的特點在於,它是動態變化的,用戶在每次連接時可能會獲得不同的IP地址。這與靜態IP形成了鮮明對比,後者在連接期間保持不變。傳統上,IP地址分為住宅IP和數據中心IP兩類。…...
2024年博客之星主题创作|2024年蓝桥杯与数学建模年度总结与心得
引言 2024年,我在蓝桥杯编程竞赛和数学建模竞赛中投入了大量时间和精力,这两项活动不仅加深了我对算法、数据结构、数学建模方法的理解,还提升了我的解决实际问题的能力。从蓝桥杯的算法挑战到数学建模的复杂应用,我在这些竞赛中…...
Spring Boot/MVC
一、Spring Boot的创建 1.Spring Boot简化Spring程序的开发,使用注解和配置的方式开发 springboot内置了tomact服务器 tomact:web服务器,默认端口号8080,所以访问程序使用8080 src/main/java:Java源代码 src/main/resource:静态资源或配置文件,存放前端代码(js,css,html) s…...
由于请求的竞态问题,前端仔喜提了一个bug
在平常的开发过程中,你可能会遇到这样一个bug。 测试:我在测一个输入框搜索的功能时,告诉你通过输入框输入的内容,和最终通过输入内容搜索出来的结果对不上。 前端:我是通过调用后端接口拿到的数据,这明显…...
【Day25 LeetCode】贪心Ⅲ
一、贪心Ⅲ 1、加油站 134 这道题直接想法是采用二重循环暴力搜索,简单粗暴但是会超时,是因为以每个点为起点最坏的情况可能都要遍历完全部的序列,有大量重复的操作,那有没有优化的地方呢?有一个结论:如果…...
蓝桥杯练习日常|递归-进制转换
未完待续,,,,,, 目录 蓝桥云课760数的计算 一、递归 题目: 我的解题代码: 二、进制转换 任意进制转十进制: 十进制转换为其他进制: 进制蓝桥杯题目…...
AI Agent:深度解析与未来展望
一、AI Agent的前世:从概念到萌芽 (一)早期探索 AI Agent的概念可以追溯到20世纪50年代,早期的AI研究主要集中在简单的规则系统上,这些系统的行为是确定性的,输出由输入决定。随着时间的推移,…...
《SwinIR:使用Swin-Transformer图像恢复》学习笔记
paper:2108.10257 GitHub:GitHub - JingyunLiang/SwinIR: SwinIR: 使用 Swin Transformer 进行图像修复 (官方仓库) 目录 摘要 1、Introduction 2、Related Work 2.1 图像修复 2.2 视觉Transformer…...
如何在Nginx服务器上配置访问静态文件目录并提供文件下载功能
引言 在搭建网站的过程中,我们经常需要让访客通过URL直接访问或下载存储在服务器特定目录下的静态文件。本文将详细介绍如何在Nginx服务器环境中配置一个名为"download"的文件目录,以便用户能够通过浏览器访问并下载其中的手册和其他文档。 …...
ansible自动化运维实战--script、unarchive和shell模块(6)
文章目录 一、script模块1.1、功能1.2、常用参数1.3、举例 二、unarchive模块2.1、功能2.2、常用参数2.3、举例 三、shell模块3.1、功能3.2、常用参数3.3、举例 一、script模块 1.1、功能 Ansible 的 script 模块允许你在远程主机上运行本地的脚本文件,其提供了一…...
理解深度学习pytorch框架中的线性层
文章目录 1. 数学角度: y W x b \displaystyle y W\,x b yWxb示例 2. 编程实现角度: y x W T b \displaystyle y x\,W^T b yxWTb3. 常见错误与易混点解析4. 小结参考链接 在神经网络或机器学习的线性层(Linear Layer / Fully Connect…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
