首页 > 其他分享 >防止表单重复提交的4种方法

防止表单重复提交的4种方法

时间:2023-04-01 19:55:34浏览次数:40  
标签:缓存 请求 重复 AddId 提交 表单 客户端

幂等性

效果:系统对某接口的多次请求,都应该返回同样的结果!(网络访问失败的场景除外)

目的:避免因为各种原因,重复请求导致的业务重复处理

重复请求场景案例:

1,客户端第一次请求后,网络异常导致收到请求执行逻辑但是没有返回给客户端,客户端的重新发起请求

2,客户端迅速点击按钮提交,导致同一逻辑被多次发送到服务器

简单来划分,业务逻辑无非都可以归纳为增删改查!

对于查询,内部不包含其他操作,属于只读性质的那种业务必然符合幂等性要求的。

对于删除,重复做删除请求至少不会造成数据杂乱,不过也有些场景更希望重复点击提示的是删除成功,而不是目标不存在的提示。

对于新增和修改,这里是今天要重点关注的部分:新增,需要避免重复插入;修改,避免进行无效的重复修改;

幂等性的实现方式

实现方法:客户端做某一请求的时候带上识别参数标识,服务端对此标识进行识别,重复请求则重复返回第一次的结果即可。

举个栗子:比如添加请求的表单里,在打开添加表单页面的时候,就生成一个AddId标识,这个AddId跟着表单一起提交到后台接口。

后台接口根据这个AddId,服务端就可以进行缓存标记并进行过滤,缓存值可以是AddId作为缓存key,返回内容作为缓存Value,这样即使添加按钮被多次点下也可以识别出来。

这个AddId什么时候更新呢?只有在保存成功并且清空表单之后,才变更这个AddId标识,从而实现新数据的表单提交

 

标签:缓存,请求,重复,AddId,提交,表单,客户端
From: https://www.cnblogs.com/2324hh/p/17279221.html

相关文章

  • 防止表单重复提交的4种方法
    幂等性效果:系统对某接口的多次请求,都应该返回同样的结果!(网络访问失败的场景除外)目的:避免因为各种原因,重复请求导致的业务重复处理重复请求场景案例:1,客户端第一次请求后,网络异常导致收到请求执行逻辑但是没有返回给客户端,客户端的重新发起请求2,客户端迅速点击按钮提交,导致同一......
  • Git提交本地项目到云端仓库(学习理解持续更新)
    进入项目文件夹初始化本地仓库gitinit把所有文件添加到版本库中gitadd.查看添加的文件gitstatus......
  • day11| 20.有效的括号;150.逆波兰表达式求值;1047.删除字符串中的所有相邻重复项
    20.有效的括号 题目简述:给定一个只包括'(',')','{','}','[',']' 的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。 思路:1.利用一个栈实现2.构建一个字典,键......
  • AsyncTask重复运行报错的解决办法。
      接着这节课老师讲的内容,因为AsyncTask只可以运行一次,如果你在AsyncTask运行中再次点击START按钮的话,也会引发一个崩溃报错(如图)  Cannotexecutetask:thetaskisalreadyrunning.翻译过来的意思是:无法执行任务,任务已经在运行中。这就是在AsyncTask运行中,又点击了......
  • 表单校验 不允许输入中文方法
     //检验不能为中文  checkData(rule,value,callback){   if(value){    if(/[\u4E00-\u9FA5]/g.test(value)){     callback(newError("不能包含中文!"));    }else{     callback();    }   }......
  • 项目一众筹网06_02给用户分配角色、执行用户角色的分配、提交的 只是我们选中的解决、
    项目一众筹网06_02项目一众筹网06_02文章目录项目一众筹网06_0209-Admin分配Role-执行分配-handler方法(执行角色分配的后端代码开始)隐藏域的东西,不用传,点击submit(提交)的时候就会传过去,如下图允许参数是空值10-Admin分配Role-执行分配-Service方法==重复问题==11-Admin分配Role-执行......
  • 使用POST方式提交表单
    使用POST方式提交表单login.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>登录</title></head><body><h3>登录</h3><formaction="/login.do&qu......
  • 前端工程化实践 - 多人开发分支管理、Git记录提交规范(二)
    一、前言Git在工作中是很重要的一部分,如果操作不熟练或者使用不规范,很容易给工作造成很多麻烦比如习惯所有功能写在一个分支,导致无法分开上线比如提交了依赖目录,导致Git仓库的代码过大比如合并分支出现错误,将不用上线的代码提交比如分支命名不规范,导致误删分支这一篇正好是前端工程......
  • element-ui plus中如何单独出发el-upload提交
    因为单独提交才好触发el-upload中的on-success函数在Vue3中,可以通过ref引用指向upload组件,然后使用该引用调用upload的submit方法来触发上传操作。具体实现如下:<template><el-uploadref="uploadRef"action="https://www.mocky.io/v2/5cc8019d300000980a05......
  • Git 提交出现冲突解决方案
    原文链接:https://blog.csdn.net/baidu_35523558/article/details/1252556841、右键git->Respository-->StashChanges2、message中输入本次提交大概信息(我一般是日期+内容),点击CreateStash3、然后本地代码就会全部还原到最近更新的一次状态,这时从git上更新代码;4、更新完成后......