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)跳过重复提交检查,则直接返回config
      return 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群,一起探讨学习哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/960151.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8改进,YOLOv8检测头融合DynamicHead,并添加小目标检测层(四头检测),适合目标检测、分割等,全网独发

摘要 作者提出一种新的检测头,称为“动态头”,旨在将尺度感知、空间感知和任务感知统一在一起。如果我们将骨干网络的输出(即检测头的输入)视为一个三维张量,其维度为级别 空间 通道,这样的统一检测头可以看作是一个注意力学习问题,直观的解决方案是对该张量进行全自…

C语言编译过程全面解析

今天是2025年1月26日,农历腊月二十七,一个距离新春佳节仅一步之遥的日子。城市的喧嚣中,年味已悄然弥漫——能在这个时候坚持上班的人,真可称为“牛人”了吧,哈哈。。。。 此刻,我在重新审视那些曾被遗忘的…

在php中怎么打开OpenSSL

(点击即可进入聊天助手) 背景 在使用php做一些项目时,有用到用户邮箱注册等,需要开启openssl的能力 在php系统中openssl默认是关闭状态的,在一些低版本php系统中,有的甚至需要在服务器终端后台,手动安装 要打开OpenSSL扩展,需要进行以下步骤 …

【数据分享】2014-2025年我国水系数据(免费获取/全国/分省)

水系数据是我们在各项研究中经常使用的数据!水系数据虽然很常用,但是却基本没有能下载最近年份水系数据的网站,所以很多人不知道如何获得水系数据。 本次我们给大家分享的是2014-2025年的全国范围的水系数据,包括水系线数据和水系…

Office2021下载与安装保姆级教程【Office Tool Plus】

Office Tool Plus安装Office2021 下载Office Tool Plus安装OfficeⅠ. 清除旧版本Ⅱ. 配置安装参数Ⅲ. 安装许可证Ⅳ. 激发(JH)Office 本文介绍使用Office Tool Plus工具下载、安装、部署Office 2021全过程。 下载Office Tool Plus OfficeToolPlus是一个…

DeepSeek明确学术研究方向效果如何?

明确学术研究方向 在学术写作中,选择一个出色的研究主题至关重要,因为它直接关系到论文是否能登上高级别的学术期刊。不少学者在这个过程中走入了误区,他们往往将大把的时间花在写作本身,而忽略了对选题的深入思考,这…

Spring MVC 综合案例

目录 一. 加法计算器 1. 准备工作 2. 约定前后端交互接口 需求分析 接口定义 3. 服务器端代码 4. 运行测试 二. 用户登录 1. 准备工作 2. 约定前后端交互接口 需求分析 接口定义 (1) 登录界面接口 (2) 首页接口 3. 服务器端代码 4. 运行测试 三. 留言板 1. 准备…

基于OSAL的嵌入式裸机事件驱动框架——消息队列osal_msg

参考B站up主【架构分析】嵌入式祼机事件驱动框架 感谢大佬分享 消息队列 消息分为hdr和bdy,把消息的头dhr和内容bdy做了一个分离的设计 dhr包括指向下一个消息的指针next,len在创建消息的时候使用,dest_id即目标任务,将消息和任务…

Github 2025-01-25Rust开源项目日报Top10

根据Github Trendings的统计,今日(2025-01-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Python项目1Vue项目1JavaScript项目1Deno: 现代JavaScript和TypeScript运行时 创建周期:2118 天开发语言:Rust, JavaScript协议类型…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.8 随机数奥秘:生成符合现实分布的虚拟数据

1.8 随机数奥秘:生成符合现实分布的虚拟数据 目录 #mermaid-svg-wHqPAE3mMd8HNYmi {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-wHqPAE3mMd8HNYmi .error-icon{fill:#552222;}#mermaid-svg-wHqPAE3mM…

使用vitepress搭建自己的博客项目

一、介绍can-vitepress-blog 什么是CAN BLOG CAN BLOG是基于vitepress二开的个人博客系统,他能够方便使用者快速构建自己的博客文章,无需繁琐的配置和复杂的代码编写。 CAN BLOG以antdv为UI设计基础,简洁大方,界面友好&#xf…

STranslate 中文绿色版即时翻译/ OCR 工具 v1.3.1.120

STranslate 是一款功能强大且用户友好的翻译工具,它支持多种语言的即时翻译,提供丰富的翻译功能和便捷的使用体验。STranslate 特别适合需要频繁进行多语言交流的个人用户、商务人士和翻译工作者。 软件功能 1. 即时翻译: 文本翻译&#xff…

【数据结构】_链表经典算法OJ:合并两个有序数组

目录 1. 题目描述及链接 2. 解题思路 3. 程序 3.1 第一版 3.2 第二版 1. 题目描述及链接 题目链接:21. 合并两个有序链表 - 力扣(LeetCode) 题目描述: 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给…

51单片机开发:动态数码管

实验目标:使8个数码管依次显示01234567。 动态数码管的原理图如下图所示:两个四位一体的数码管,其段选接在P0端口上。下表以数字0为例,描述端口输出值与数码管显示的对照关系。 dpgfedcbaP07P06P05P04P03P02P01P00001111110x3f&…

84,【8】BUUCTF WEB [羊城杯 2020]Blackcat

进入靶场 音乐硬控我3分钟 回去看源码 <?php // 检查 POST 请求中是否包含 Black-Cat-Sheriff 和 One-ear 字段 // 如果任意一个字段为空&#xff0c;则输出错误信息并终止脚本执行 if(empty($_POST[Black-Cat-Sheriff]) || empty($_POST[One-ear])){die(请提供 Black-C…

挂载mount

文章目录 1.挂载的概念(1)挂载命令&#xff1a;mount -t nfs(2)-t 选项&#xff1a;指定要挂载的文件系统类型(3)-o选项 2.挂载的目的和作用(1)跨操作系统访问&#xff1a;将Windows系统内容挂载到Linux系统下(2)访问外部存储设备(3)整合不同的存储设备 3.文件系统挂载要做的事…

数据分箱 baggingboosting onehot独热编码 woe编码 sklearn的ensemble(集成学习)

目录 数据分箱就是将连续变量离散化。 bagging&boosting onehot独热编码 独热编码的结果如下&#xff1a; woe编码 WOE编码的基本原理 步骤一&#xff1a;计算WOE 步骤二&#xff1a;应用WOE WOE编码的优点 示例 数据示例 步骤一&#xff1a;计算每个类别的违约…

Jetson Xavier NX (ARM) 使用 PyTorch 安装 Open3D-ML 指南

由于 Jetson 为 ARM64 (aarch64) 的系统架构&#xff0c;所以不能用 pip install 直接安装&#xff0c;需要通过源码编译。 升级系统 JetPack 由于 Open3D-ML 目前只支持 CUDA 10.0 以及 CUDA 11.*&#xff0c;并且 JetPack 的 CUDA 开发环境只有10.2、11.4以及12.2&#xff0…

【Linux系统】进程间通信:进程池

进程池的结构图示如下&#xff1a; 一、初始化进程池 1、创建多个子进程 通过 main 命令行参数获取需要创建子进程的个数 判断 argc 个数&#xff0c;使用 usage 提示 在编程和命令行工具中&#xff0c;“usage” 通常指的是命令或程序的使用说明&#xff0c;即如何正确使用该…

【问题解决】el-upload数据上传成功后不显示成功icon

el-upload数据上传成功后不显示成功icon 原因 由于后端返回数据与要求形式不符&#xff0c;使用el-upload默认方法调用onSuccess钩子失败&#xff0c;上传文件的状态并未发生改变&#xff0c;因此数据上传成功后并未显示成功的icon标志。 解决方法 点击按钮&#xff0c;调用…