接口设计的幂等性

接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条...,这就没有保证接口的幂等性。

解决方案我们可以参考乐观锁:每次先拿到当前的某个版本号标志或者价格,然后修改的时候把这个标识作为条件,就可以在余额已经变化的情况下,不操作了(核心原理就是通过某个条件,判断记录是不是已经变化了)。

比如说我们要执行用户扣款操作,扣款操作之前我们可以发送一次请求获取当前用户的一组标识信息如余额等作为流水号返回,之后携带此流水号发起真正的扣款请求,当因为网络问题,我们发送了多次扣款请求后,但是因为同一用户的多次请求信息中,标识的用户余额相同,所以这笔交易存在问题,可以提醒用户,或采用其它算法只执行一次扣款操作。

原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com

(1)
witersen的头像witersen
上一篇 2021年1月3日 下午2:03
下一篇 2021年1月18日 上午8:04

相关推荐

发表回复

登录后才能评论