本申请涉及web服务,特别是涉及web页面出现幂等性问题的处理方法、装置、设备和介质。
背景技术:
1、幂等是一个数学和计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。所谓接口幂等性,就是一次请求和多次请求某一个资源对于资源本身应该具有同样的结果根据总结到的幂等性问题的特征。业务开发中,经常会遇到重复提交的情况,无论是由于网络问题无法收到请求结果而重新发起请求,或是前端的操作抖动而造成重复提交的情况。
2、因此当服务接口在外部调用者会存在多次调用的情况,或者由于网络和设备卡顿等特殊情况而出现幂等性问题,若调用方发送了多次相同的请求,会导致数据损坏、重复处理和系统状态不一致的危害。
3、现有技术中,判断接口幂等性通常是通过数据库的唯一键的机制,例如根据身份证号、手机号、学籍号等属性的唯一性,在数据库建立唯一键,如果插入重复数据时,则返回异常,从而保证接口幂等性。但是有的业务场景可能不存在唯一的属性,如果业务场景没有唯一的属性,则不能在数据库建立唯一索引;或者由于数据量和资源的问题,若通过数据库中建立唯一键进行接口幂等性判断,会导致触发幂等性校验的链更长,同时也给数据库带来压力。
技术实现思路
1、基于此,有必要针对上述技术问题,提供web页面出现幂等性问题的处理方法、装置、设备和介质。
2、第一方面,本申请实施例提供了一种web页面出现幂等性问题的处理方法,所述方法包括:
3、基于客户端提交的业务请求信息,获取多个业务请求参数;其中,所述业务请求参数包括接口id;
4、判断所述接口id是否在aop切点集合中;
5、若在,则预先构建的aop切面根据所述多个业务请求参数,生成唯一性标识;并根据所述唯一性标识,判断所述接口id对应的接口是否出现幂等性异常;
6、若是,则向所述客户端发送幂等性异常消息;
7、若否,则将所述唯一性标识添加至缓存中,并基于所述业务请求信息进行业务处理。
8、在其中一个实施例中,所述方法还包括:
9、定义一个aop切面;
10、将幂等性异常判断逻辑代码写入所述aop切面中,获得预先构建的aop切面。
11、在其中一个实施例中,所述根据所述唯一性标识,判断所述接口id对应的接口是否出现幂等性异常包括:
12、使用所述预先构建的aop切面判断缓存中是否存在所述唯一性标识;
13、若存在,则所述接口id对应的接口出现幂等性异常;
14、若不存在,则所述接口id对应的接口未出现幂等性异常。
15、在其中一个实施例中,所述多个业务请求参数还包括用户令牌、请求参数、表单时间戳;其中,所述表单时间戳在客户端提交业务请求信息时生成。
16、在其中一个实施例中,所述预先构建的aop切面根据所述多个业务请求参数,生成唯一性标识包括:
17、对所述用户令牌进行web服务权限检验,获取用户id;
18、采用哈希函数对所述请求参数进行处理,获得哈希值;
19、将所述用户id、所述接口id、所述哈希值以及所述表单时间戳拼接成唯一性标识。
20、在其中一个实施例中,所述方法还包括:
21、使用所述预先构建的aop切面判断所述唯一性标识是否由所述用户id、所述接口id、所述哈希值以及所述表单时间戳生成;若否,则向所述客户端返回参数异常消息。
22、在其中一个实施例中,所述方法还包括:
23、通过切点函数将指定接口对应的接口id添加至所述aop切点集合中。
24、第二方面,本申请实施例还提供了一种web页面出现幂等性问题的处理装置,其特征在于,所述装置包括:
25、生成模块,用于基于客户端提交的业务请求信息,获取多个业务请求参数;其中,所述业务请求参数包括接口id;
26、第一判断模块,用于判断所述接口id是否在aop切点集合中;
27、第二判断模块,用于若在,则预先构建的aop切面根据所述多个业务请求参数,生成唯一性标识;并根据所述唯一性标识,判断所述接口id对应的接口是否出现幂等性异常;
28、发送模块,用于若是,则向所述客户端发送幂等性异常消息;
29、处理模块,用于若否,则将所述唯一性标识添加至缓存中,并基于所述业务请求信息进行业务处理。
30、第三方面,本申请实施例还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述第一方面所述的方法。
31、第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述第一方面所述的方法。
32、上述web页面出现幂等性问题的处理方法、装置、设备和可读存储介质,通过基于客户端提交的业务请求信息,获取多个业务请求参数;其中,所述业务请求参数包括接口id;判断所述接口id是否在aop切点集合中;若在,则预先构建的aop切面根据所述多个业务请求参数,生成唯一性标识;并根据所述唯一性标识,判断所述接口id对应的接口是否出现幂等性异常;若是,则向所述客户端发送幂等性异常消息;若否,则将所述唯一性标识添加至缓存中,并基于所述业务请求信息进行业务处理。本申请将幂等性检验判断逻辑写在aop的切面中进行接口幂等性校验,保证与业务代码的解耦,缩短幂等性问题触发链,实现对接口幂等性问题的快速响应,防止接口幂等性带来的数据不安全等危害,同时不需要依赖业务场景和数据库的特征,减少了数据库的压力。
33、本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
1.一种web页面出现幂等性问题的处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述根据所述唯一性标识,判断所述接口id对应的接口是否出现幂等性异常包括:
4.根据权利要求1所述的方法,其特征在于,所述多个业务请求参数还包括用户令牌、请求参数、表单时间戳;其中,所述表单时间戳在客户端提交业务请求信息时生成。
5.根据权利要求4所述的方法,其特征在于,所述基于所述多个业务请求参数,生成唯一性标识包括:
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
8.一种web页面出现幂等性问题的处理装置,其特征在于,所述装置包括:
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至权利要求7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至权利要求7中任一项所述的方法。