当前位置: 首页 > news >正文

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软件基金会&#xff…...

C#Object类型的索引,序列化和反序列化

前言 最近在编写一篇关于标准Mes接口框架的文章。其中有一个非常需要考究的内容时如果实现数据灵活和可使用性强。因为考虑数据灵活性,所以我一开始选取了Object类型作为数据类型,Object作为数据Value字段,String作为数据Key字段&#xff0c…...

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…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

生成 Git SSH 证书

🔑 1. ​​生成 SSH 密钥对​​ 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​: -t rsa&#x…...

Kafka入门-生产者

生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)&#xff…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...

6.9-QT模拟计算器

源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...

[拓扑优化] 1.概述

常见的拓扑优化方法有&#xff1a;均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有&#xff1a;有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...