【技术实现步骤摘要】
用于实现接口幂等性的方法和装置
本申请涉及计算机
,具体涉及云计算
技术介绍
幂等性原本是数学上的概念,即使公式:f(x)=f(f(x))能够成立的数学性质。用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。例如用户支付订单,因为页面卡顿或者用户重复点击,浏览器发起了多个支付订单的请求,后端系统接收到所有请求后,务必保证只有1个请求被正常处理,并丢弃其他请求。这样才能保证用户账户仅被扣款一次,而非多次。随着互联网的快速发展,越来越多的网站会对外开放自己的应用程序接口(API),如何保证API的幂等性,是一个非常重要的课题。
技术实现思路
本公开提供了一种用于实现接口幂等性的方法、装置、电子设备以及存储介质。根据本公开的第一方面,提供了一种用于实现接口幂等性的方法,包括:响接收包括客户端的令牌的http请求;如果http请求需要保证幂等性,则根据令牌获取预先存储在数据库中的令牌锁;如果令牌锁获取成功,则删除数据库中令牌对应的数 ...
【技术保护点】
1.一种用于实现接口幂等性的方法,包括:/n接收包括客户端的令牌的http请求;/n如果所述http请求需要保证幂等性,则根据所述令牌获取预先存储在数据库中的令牌锁;/n如果令牌锁获取成功,则删除所述数据库中所述令牌对应的数据键值表中的值,并对所述http请求进行处理,得到响应结果;/n如果所述响应结果为成功,则将所述响应结果返回所述客户端,并将所述响应结果和所述http请求的输入参数的信息摘要算法MD5加密结果作为所述数据键值表的值写入所述数据库,并设置所述数据键值表和所述令牌锁的过期时间。/n
【技术特征摘要】
1.一种用于实现接口幂等性的方法,包括:
接收包括客户端的令牌的http请求;
如果所述http请求需要保证幂等性,则根据所述令牌获取预先存储在数据库中的令牌锁;
如果令牌锁获取成功,则删除所述数据库中所述令牌对应的数据键值表中的值,并对所述http请求进行处理,得到响应结果;
如果所述响应结果为成功,则将所述响应结果返回所述客户端,并将所述响应结果和所述http请求的输入参数的信息摘要算法MD5加密结果作为所述数据键值表的值写入所述数据库,并设置所述数据键值表和所述令牌锁的过期时间。
2.根据权利要求1所述的方法,其中,所述方法还包括:
如果所述http请求不需要保证幂等性,则对所述http请求进行处理,得到响应结果,并将所述响应结果返回给客户端。
3.根据权利要求1所述的方法,其中,所述方法还包括:
如果令牌锁获取失败且所述数据库中存在所述令牌对应的数据键值表,则校验所述http请求输入参数的MD5加密结果和所述数据键值表中的MD5加密结果的一致性;
如果所述http请求输入参数的MD5加密结果和所述数据键值表中的MD5加密结果一致,则将所述数据键值表中的响应结果返回给客户端,并更新所述数据键值表和所述令牌锁的过期时间。
4.根据权利要求3所述的方法,其中,所述方法还包括:
如果所述http请求输入参数的MD5加密结果和所述数据键值表中的MD5加密结果不一致,则向所述客户端返回表征相同令牌却包含了不同的请求参数的第一异常消息。
5.根据权利要求3所述的方法,其中,所述方法还包括:
如果令牌锁获取失败且所述数据库中不存在所述令牌对应的数据键值表,则等待预定时间后重试获取所述令牌锁;
如果重试次数达到预定值仍然没有获取到所述令牌锁,则向所述客户端返回表征并发情况下重试失败的第二异常消息。
6.根据权利要求1-5中任一项所述的方法,其中,所述方法还包括:
使用Spring的过滤器和拦截器实现幂等,将用于标识接口的幂等性的注解的逻辑写入所述过滤器和所述拦截器中。
7.一种用于实现接口幂等性的装置,包括:
接收单元,被配置成接收包括客户端的令牌的http请求;
令牌获取单元,被配置成如果所述http请求需要保证幂等性,则根据所述令牌获取预先存储在数据库中的令牌锁;
处理单元,被配置成如果令牌锁获取成功,则删除所述数据库中所述令牌对应...
【专利技术属性】
技术研发人员:蒲勇全,
申请(专利权)人:北京百度网讯科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。