如何保证接口幂等

如何保证接口幂等

接口幂等是指多次发送同一个请求,保证操作执行一次

通过概念得知需要多次发送同一个请求,那么多次请求的原因有哪些

  • 多次点击提交按钮
  • 点击页面刷新
  • 使用浏览器后退按钮重复之前的操作,导致重复提交表单
  • 使用浏览器历史记录重复提交表单
  • 请求retry重试机制

针对上述情况如何解决呢?

  • 前端js提交按钮进行处理,防止重复点击
  • 使用重定向方式,使得提交表单后重定向到提交成功页面,避免用户刷新页面导致的重复提交,也可以消除浏览器前进后退导致的问题
  • session中生成一个唯一标识,请求时将唯一标识写入到表单的隐藏字段中,后端判断唯一标识与session中的是否一致,一致则说明是第一次请求,处理该请求后移除session中的标识;不相等则说明是重复请求,不进行处理
  • 使用数据库进行防止,insert时使用唯一索引,update时使用乐观锁version

zhhll.icu/2023/javawe...

本文由mdnice多平台发布

相关推荐
魂梦翩跹如雨几秒前
Java BigDecimal与RoundingMode的用法总结
java·算法
一入程序无退路3 分钟前
若依框架导出显示中文,而不是数字
java·服务器·前端
tealcwu4 分钟前
【Unity基础】实现Scroll View跟随动态内容滚动
java·unity·游戏引擎
m0_626535205 分钟前
代码分析 关于看图像是否包括损坏
java·前端·javascript
李贺梖梖6 分钟前
day06 二维数组、Arrays、System、HuTool、方法
java
pingzhuyan6 分钟前
linux常规(shell脚本)-启动java程序-实现快捷git拉取,maven打包,nohup发布(无dockerfile版)
java·linux·git·maven·shell
小股虫7 分钟前
idea编译内存溢出 java: java.lang.OutOfMemoryError: WrappedJavaFileObject[ 解决方案
java·ide·intellij-idea·idea
U***74698 分钟前
三大框架-Spring
java·spring·rpc
南部余额10 分钟前
深度解析 Spring @Conditional:实现智能条件化配置的利器
java·后端·spring·conditional
计算机毕设指导614 分钟前
基于Springboot+微信小程序流浪动物救助管理系统【源码文末联系】
java·spring boot·后端·spring·微信小程序·tomcat·maven