如何保证接口幂等

如何保证接口幂等

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

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

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

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

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

zhhll.icu/2023/javawe...

本文由mdnice多平台发布

相关推荐
爱上妖精的尾巴5 分钟前
8-8 WPS JS宏 正则表达式 字符组与任选
java·服务器·前端
一嘴一个橘子15 分钟前
mybatis-plus 基于 service 接口的 crud
java
Java小卷1 小时前
KIE Drools 10.x 规则引擎快速入门
java·后端
fengsen52113141 小时前
Windows操作系统部署Tomcat详细讲解
java·windows·tomcat
竟未曾年少轻狂1 小时前
Spring Boot 项目集成 Redis
java·spring boot·redis·缓存·消息队列·wpf·redis集群
_codemonster1 小时前
java web修改了文件和新建了文件需要注意的问题
java·开发语言·前端
Java天梯之路1 小时前
Spring Boot 钩子全集实战(九):`@PostConstruct` 详解
java·spring boot·后端
松涛和鸣1 小时前
75、 IMX6ULL LM75温度传感器I2C驱动开发
java·linux·数据库·驱动开发·python
独自破碎E1 小时前
BISHI41 【模板】整除分块
java·开发语言
毕设源码-郭学长1 小时前
【开题答辩全过程】以 基于Springboot图书管理系统为例,包含答辩的问题和答案
java·spring boot·后端