当前位置:主页 > 查看内容

怎么保证接口的幂等性

发布时间:2021-07-17 00:00| 位朋友查看

简介:怎么保证接口的幂等性 前言 首先来说下幂等性这个概念吧接口幂等性就是同一个接口多次调用的结果是一样的。 场景 1、form表单操作因为网络原因或者客户手快的原因连续点了好几次数据库多了几条不该有的数据或者某个字段的值修改结果跟逾期不符合。 2、第三方……

怎么保证接口的幂等性

前言
首先来说下幂等性这个概念吧,接口幂等性就是同一个接口多次调用的结果是一样的。

场景
1、form表单操作,因为网络原因或者客户手快的原因连续点了好几次,数据库多了几条不该有的数据,或者某个字段的值修改结果跟逾期不符合。
2、第三方接口回调 就拿支付回调来说,通常我们会在回调中更新下订单,还有添加一些支付信息等。多次调用会出现重复记录,或者订单某个字段的更新错误。

上面的操作 总结下就是两种
1、添加insert操作,会导致重复记录
2、更新update操作,会导致数据更新错误

解决办法:
1、insert操作如果提交的的字段里有唯一字段,那么加上唯一索引,
2、操作之前先去查一下这个表,update的话就根据id查这个表的状态有没有更新过,insert的话根据唯一性字段查询数据库有没有此记录,如果有则不走insert和update直接返回成功,
3、如果当前表除了主键没有唯一字段,并且是高并发的情况那么我们可以加锁 乐观锁或者悲观锁(推荐乐观锁)
4,如果不光有高并发,而且是分布式的话可以用分布式锁 如redis分布式锁、zookeeper锁等

本文只是简单总结,勿喷,如有不对的地方写出你的想法

;原文链接:https://blog.csdn.net/a032788a/article/details/115760416
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:数据库第三章作业 下一篇:没有了

推荐图文


随机推荐