1、什么是幂等
是一个数学与计算机学概念,常见于抽象代数中;其特点是其任意多次执行所产生的影响均与一次执行的影响相同。
2、什么是接口幂等性
接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用
3、为什么要做接口幂等性
举个例子:
用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时上次接口提交的结果已经执行, 用户的钱已经扣了,如果没有做幂等,用户可以再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条。
4、如何实现
渠道:
i、查询一次多次在数据不变的情况下都是一样的结果,具有天然幂等
ii、删除亦是天然幂等
iii、修改和新增 都是做数据的变动,需要做好幂等
方式:
i、代码状态判断;如订单提交的时候,先查下订单的状态,如果已经支付过了,直接return重复提交
ii、token机制:提交接口的时候先申请token,提交的时候携带token;后台在接收到请求后,如果token无效或者无token,则判断接口重复提交
iii、唯一索引(新增记录)、mysql乐观锁用版本号
iiii、分布式锁(根据请求参数获取分布式锁,这样其他重复请求获取不到锁,防止出现重复提交问题)
网友评论