一种实现接口幂等性的方法和装置制造方法及图纸

技术编号:35143126 阅读:24 留言:0更新日期:2022-10-05 10:19
本发明专利技术提供了一种实现接口幂等性的方法和装置,涉及网络安全,该方法应用于服务端,包括:生成Token,将Token发送至客户端和Redis服务器;所述Token在Redis服务器设有过期时间;接收客户端的业务请求;所述业务请求是客户端根据Token生成;从业务请求中获取Token,向Redis服务器查询是否存在相同Token,若Redis服务器中存在该相同Token,则删除所述Token,执行业务请求;若Redis服务器中不存在该相同Token,则抛出异常,返回错误信息至客户端,以使所述客户端展示所述错误信息。本发明专利技术采用先存入Redis,后判断重复后再删除的方案,实现交易的幂等性。易的幂等性。易的幂等性。

【技术实现步骤摘要】
一种实现接口幂等性的方法和装置


[0001]本专利技术涉及网络安全
,尤其涉及一种实现接口幂等性的方法和装置。

技术介绍

[0002]本部分旨在为权利要求书中陈述的本专利技术的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
[0003]解决网络请求的幂等性,一直是互联网应用的难题和焦点。作为一个数学概念,幂等意味着任一元素多次执行,会和执行一次的结果相同。无论是幂等函数,还是幂等方法,是允许相同参数多次执行,而执行结果不变。探索该问题解决方案的重要性,保证了重复执行不会改变内存、硬盘、及操作系统的状态。
[0004]在客户端进行接口调用时,一般情况下都能正常返回信息,不会重复提交。但在内存和CPU占用率较高,资源较为紧张的情况下,重复的概率会急剧升高。
[0005]例如:接口超时重复提交:很多时候HTTP客户端工具,或者第三方的HTTP中间件(最典型的有okHttp),都默认开启超时重试的机制。特别是第三方调用接口时候,为了防止网络波动超时等造成的请求失败,都会添加重试机制,导致一个请求提交多次。该情况不仅会导致业务风险,还会极大地消耗资源,甚至引起系统雪崩。另外,前端重复提交表单:在填写一些表格时候,用户填写完成提交,很多时候会因网络波动没有及时对用户做出提交成功响应,致使用户认为没有成功提交,然后一直点提交按钮,这时就会发生重复提交表单请求。
[0006]因此,如何提供一种新的方案,其能够解决上述技术问题是本领域亟待解决的技术难题。
专利技术内容
[0007]本专利技术实施例提供一种实现接口幂等性的方法,应用于服务端,采用先存入Redis,后判断重复后再删除的方案,实现交易的幂等性,该方法包括:
[0008]生成Token,将Token发送至客户端和Redis服务器;所述Token在Redis服务器设有过期时间;
[0009]接收客户端的业务请求;所述业务请求是客户端根据Token生成;
[0010]从业务请求中获取Token,向Redis服务器查询是否存在相同Token,若Redis服务器中存在该相同Token,则删除所述Token,执行业务请求;若Redis服务器中不存在该相同Token,则抛出异常,返回错误信息至客户端,以使所述客户端展示所述错误信息。
[0011]本专利技术实施例还提供一种实现接口幂等性的装置,应用于服务端,包括:
[0012]Token生成模块,用于生成Token,将Token发送至客户端和Redis服务器;所述Token在Redis服务器设有过期时间;
[0013]业务请求接收模块,用于接收客户端的业务请求;所述业务请求是客户端根据Token生成;
[0014]幂等性验证模块,用于从业务请求中获取Token,向Redis服务器查询是否存在相同Token,若Redis服务器中存在该相同Token,则删除所述Token,执行业务请求;若Redis服务器中不存在该相同Token,则抛出异常,返回错误信息至客户端,以使所述客户端展示所述错误信息。
[0015]本专利技术实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种实现接口幂等性的方法。
[0016]本专利技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述一种实现接口幂等性的方法。
[0017]本专利技术实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述一种实现接口幂等性的方法。
[0018]本专利技术实施例提供的一种实现接口幂等性的方法和装置,应用于服务端,包括:生成Token,将Token发送至客户端和Redis服务器;所述Token在Redis服务器设有过期时间;接收客户端的业务请求;所述业务请求是客户端根据Token生成;从业务请求中获取Token,向Redis服务器查询是否存在相同Token,若Redis服务器中存在该相同Token,则删除所述Token,执行业务请求;若Redis服务器中不存在该相同Token,则抛出异常,返回错误信息至客户端,以使所述客户端展示所述错误信息。本专利技术为了提高二阶段的分布式事务的成功率,采用先存入Redis,后判断重复后再删除的方案,实现交易的幂等性。采用直接插入Redis内存,重复后再删除原纪录的方式,可以保证Token不再丢失,并减少了Redis内存的记录数。本专利技术在调用接口时,生成全局唯一Token,存入Redis服务器,后续的业务请求中包含Token,通过对业务请求中的Token验证Redis服务器中是否存在相同Token,若存在,则删除Token,执行业务请求,若不存在,则抛出异常,返回错误信息至客户端,从而实现了交易的幂等性。
附图说明
[0019]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
[0020]图1为本专利技术实施例一种实现接口幂等性的方法示意图。
[0021]图2为本专利技术实施例一种实现接口幂等性的方法的交互图。
[0022]图3为本专利技术实施例一种实现接口幂等性的方法的一个实施例示意图。
[0023]图4为本专利技术实施例一种实现接口幂等性的方法的一个实施例示意图。
[0024]图5为运行本专利技术实施的一种实现接口幂等性的方法的计算机设备示意图。
[0025]图6为本专利技术实施例一种实现接口幂等性的装置示意图。
具体实施方式
[0026]为使本专利技术实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本专利技术实施例做进一步详细说明。在此,本专利技术的示意性实施例及其说明用于解释本专利技术,但并
不作为对本专利技术的限定。
[0027]图1为本专利技术实施例一种实现接口幂等性的方法示意图,如图1所示,本专利技术实施例提供一种实现接口幂等性的方法,应用于服务端,采用先存入Redis,后判断重复后再删除的方案,实现交易的幂等性,该方法包括:
[0028]步骤101:生成Token,将Token发送至客户端和Redis服务器;所述Token在Redis服务器设有过期时间;
[0029]步骤102:接收客户端的业务请求;所述业务请求是客户端根据Token生成;
[0030]步骤103:从业务请求中获取Token,向Redis服务器查询是否存在相同Token,若Redis服务器中存在该相同Token,则删除所述Token,执行业务请求;若Redis服务器中不存在该相同Token,则抛出异常,返回错误信息至客户端,以使所述客户端展示所述错误信息。
[0031]本专利技术实施例提本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种实现接口幂等性的方法,其特征在于,应用于服务端,包括:生成Token,将Token发送至客户端和Redis服务器;所述Token在Redis服务器设有过期时间;接收客户端的业务请求;所述业务请求是客户端根据Token生成;从业务请求中获取Token,向Redis服务器查询是否存在相同Token,若Redis服务器中存在该相同Token,则删除所述Token,执行业务请求;若Redis服务器中不存在该相同Token,则抛出异常,返回错误信息至客户端,以使所述客户端展示所述错误信息。2.如权利要求1所述的方法,其特征在于,生成Token,将Token发送至客户端和Redis服务器,包括:接收客户端发送的获取Token请求;根据所述获取Token请求,按照Token生成参数,确定唯一Token;将Token发送至客户端,以使客户端将所述Token存入Session中;将Token发送至Redis服务器。3.如权利要求2所述的方法,其特征在于,将Token发送至Redis服务器,包括:将Token作为键,将用户信息作为值,组成键值对;将键值对发送至Redis服务器,以使Redis服务器存储所述键值对,并设置所述键值对的过期时间;所述键值对若超出所述过期时间,则删除所述键值对。4.如权利要求3所述的方法,其特征在于,所述业务请是客户端将Token放到请求报文的Http的报文头,将用户信息放入报文体,调用Restful API接口,根据报文头和报文体所生成的业务请求。5.如权利要求4所述的方法,其特征在于,从业务请求中获取Token,向Redis服务器查询是否存在相同Token,若Redis服务器中存在该相同Token,则删除所述Token,包括:从业务请求中解析出报文头,从报文头中获取Token;根据所述获取Token,向Redis服务器查询是否存在相同Token;若Redis服务器中存在该相同Token,则验证报文体中的用户信息与Redis服务器中该相同Token所属键值对的值是否匹配,若匹配,则删除所述Token。6.如权利要求1所述的方法,其特征在于,所述删除所述Token的操作,采用Lua表达式实现。7.一种实现接口幂等性的装置,其特征在于,应用于服务端,包括:Token生成模块,用于生成Token,将Token发送至客户端和Redis服务器;所述Token在Redis服务器设有过期...

【专利技术属性】
技术研发人员:邓万昌石毅
申请(专利权)人:中国银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1