尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

SpringBoot 接口幂等性设计——防重复提交终极方案

SpringBoot 接口幂等性设计——防重复提交终极方案
📅 发布时间:2026/7/9 1:30:43

幂等性是指同一操作多次执行和一次执行的结果相同。支付、下单、转账等接口必须保证幂等性,否则用户多次点击就会产生多笔订单。

一、什么是幂等

非幂等:每次执行都会改变状态 请求1:扣款100元 → 余额900 请求2:扣款100元 → 余额800 ❌(重复扣款) 幂等:多次执行结果与一次相同 请求1:取消订单 → 订单已取消 请求2:取消订单 → 订单已取消 ✅(状态不变)

二、实现方案

1. 数据库唯一索引

// 订单表增加 order_no 唯一索引// 重复插入时数据库报错,捕获后返回"订单已存在"@TransactionalpublicOrdercreateOrder(OrderDTOdto){Orderorder=newOrder();order.setOrderNo(OrderNoGenerator.generate());// ...try{orderMapper.insert(order);returnorder;}catch(DuplicateKeyExceptione){thrownewBusinessException(400,"订单已存在,请勿重复提交");}}

2. Token + Redis(推荐)

@RestController@RequestMapping("/api")publicclassIdempotentController{@AutowiredprivateStringRedisTemplateredisTemplate;@GetMapping("/token")publicResultVO<String>getToken(){Stringtoken=IdUtil.simpleUUID();redisTemplate.opsForValue().set("idempotent:"+token,"1",30,TimeUnit.MINUTES);returnResultVO.success(token);}@PostMapping("/order")publicResultVO<?>createOrder(@RequestBodyOrderDTOdto,@RequestHeader("idempotent-token")Stringtoken){// 删除 Token,删除成功说明是首次请求Booleandeleted=redisTemplate.delete("idempotent:"+token);if(Boolean.FALSE.equals(deleted)){returnResultVO.error(400,"请勿重复提交");}// 业务逻辑...returnResultVO.success("下单成功");}}

前端流程:

1. 进入下单页 → 请求 /api/token 获取 Token 2. 提交订单 → header 携带 Token 3. 服务端校验 Token 是否存在,存在则删除并执行业务 4. 重复提交 → Token 已不存在 → 拒绝

💡 觉得有用的话,点赞 + 关注【张老师技术栈】吧!每周更新 Java/Python/爬虫 实战干货,不让你白来。

相关新闻

  • 对抗攻击实操入门(一):从零搭建环境并复现 FGSM 与 PGD 攻击(超详细)
  • 抖店一件代发需要补发怎么办供应商少发漏发怎么和买家沟通
  • 烽火连三月,API贵如油——中东动荡下的AI成本突变实录

最新新闻

  • 踏入次世代数字世界:虚幻引擎(Unreal Engine)全景指南
  • Day 3:定位策略进阶
  • 从AI行业大奖看下一代人工智能技术趋势与工程实践
  • 开源分析-joyagent多模态RAG实现
  • GLM5.2模型自部署实战:vLLM加速与量化技术实现推理性能超越
  • 运维与后端的绝对刚需之 Linux 性能调优与故障排查

日新闻

  • SQL 查询语句的标准逻辑执行顺序(即语义处理顺序),它与实际书写顺序不同,但决定了数据库如何解析和执行查询
  • ORB-SLAM2 重定位模块深度解析:从 BoW 候选帧到 PnP 优化的 6 步流程
  • 罗技鼠标宏压枪脚本终极指南:从原理到实战的完整解析

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号