Restful api 防止重复提交

Restful api 防止重复提交

当前很多网站是前后分离的,前端(android,iso,h5)通过restful API 调用 后端服务器,这就存在一个问题,对于创建操作,比如购买某个商品,如果由于某种原因,手抖,控件bug,网络错误,可能导致一次操作实际上购买了多次同一个产品。所以,我们要考虑防止重复提交。这个重复提交我们只限定于创建操作,对于修改和删除操作,原则上是幂等的,不用担心,查询操作更不用担心重复操作。

方案一,前端在提交时候生成一个基于时间的sequence,将这个参数传到后端,后端根据uriPath+userId+sequence作为key,采用redis分布式锁,setNX,防止重复提交

方案二,前端不用传递sequence,后端根据请求的payload和其他参数来确定唯一,uriPath+userId+MD5(JsonString(所有参数))作为key,用redis分布式锁

具体实现:

对于方案一,防止重复提交交给了前端控制,sequence的生成可以是时间戳。后端可以做在servlet filter 中或者在restful 框架的filter中比如resteasy 的ContainerRequestFilter中

对于第二种方案,防止重复提交完全由后端控制,前端无感,不能做在filter中,因为request payload只能被消费一次。可以用spring aop来实现,对resource method 做aop拦截。

优劣:基于我们的目的,是为了防止重复提交,第二种方案能够更彻底的防止重复提交,并且易于控制。

原文:https://blog.csdn.net/joshua1830/article/details/78931420

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112497.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 5分钟商学院之个人篇–演讲能力和沟通能力

    1.演讲能力1.1认知台阶影响力是成为领导的必要条件,而演讲是实现影响力最重要的方法之一经常有人说,全天下最难的两件事:一是把钱从别人的口袋里掏出来,二是把想法塞到别人的脑海中去。这个说法不

    2021年12月30日
    48
  • 三种算法求两个正整数的最大公约数和最小公倍数;求三个数的最大公约数和最小公倍数「建议收藏」

    三种算法求两个正整数的最大公约数和最小公倍数;求三个数的最大公约数和最小公倍数「建议收藏」第二次作业题目:求两个正整数的最大公约数和最小公倍数。基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出。提高要求:1.三种以上算法解决两个正整数最大公约数问题。          2.求3个正整数的最大公约数和最小公倍数。一.算法分析    已知结论:a,b的最大公约数*其最小公倍数=a…

    2022年5月17日
    48
  • 基于51单片机+LD3320语音模块+SYN6288语音合成——语音识别智能分类垃圾桶「建议收藏」

    基于51单片机+LD3320语音模块+SYN6288语音合成——语音识别智能分类垃圾桶「建议收藏」语音识别智能分类垃圾桶基本介绍器件51单片机LD3320语音模块SYN6288语音合成SG90舵机(4个)usb-ttl模块垃圾桶四个(4个)面包板(建议用)实现思路与接线实现流程图接线呈现图代码编写语音模块(部分代码)语音模块串口调试结果51单片机代码(部分代码 )项目展示基本介绍这个一个基于51单片机做的一个语音识别分类智能垃圾桶,通过我们说话来对垃圾词语进行分类。比如:垃圾桶(一级指令)易拉罐(垃圾词语),我们通过说话说出关键字让语音模块接收到——语音模块通过串口发指令给51单片机,针对

    2022年6月26日
    27
  • axios如何跨域请求_前端跨域请求

    axios如何跨域请求_前端跨域请求axios跨域请求详情写这篇文章的背景是因为之前遇到的,在跨域的情况下通过axios发起的get请求正常,post请求会在正式请求发送之前先发送一个opstions请求,而后端接口没有兼容options,导致404的情况。而在解决这个问题时带着好奇心顺带查了一下,给自己补充了些知识点跨域请求分两种简单讲,从JavaScript代码发起的XMLHttpRequest请求可以分为两种:不会触发CORS预检的请求,而是直接向服务端发送请求,什么是CORS预检咱们后面

    2025年10月27日
    3
  • alexa全球排名怎样获取_非法访问是什么情况

    alexa全球排名怎样获取_非法访问是什么情况记录日期:2018.9.27标题测试开始于Censored*标签google.com3月2011100%Blocked,Domains,AlexaTop1000Domains,GoogleSites,URLsyoutube.com2月2011100%Blocked,Domains,AlexaTop1000Domains,URLsf…

    2025年8月26日
    10
  • 机器学习中的有监督学习,无监督学习,半监督学习

    机器学习中的有监督学习,无监督学习,半监督学习在机器学习(Machinelearning)领域,主要有三类不同的学习方法:监督学习(Supervisedlearning)、非监督学习(Unsupervisedlearning)、半监督学习(Semi-supervisedlearning),监督学习:通过已有的一部分输入数据与输出数据之间的对应关系,生成一个函数,将输入映射到合适的输出,例如分类。非监督学习:直接

    2022年5月28日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号