程序员

怎么保证接口的幂等性

作者:admin 2021-07-17 我要评论

怎么保证接口的幂等性 前言 首先来说下幂等性这个概念吧接口幂等性就是同一个接口多次调用的结果是一样的。 场景 1、form表单操作因为网络原因或者客户手快的原...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

怎么保证接口的幂等性

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

场景
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

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 数智洞察丨和死神赛跑,那些不得不“闯

    数智洞察丨和死神赛跑,那些不得不“闯

  • 酒店小程序开发瑞蚁解决方案

    酒店小程序开发瑞蚁解决方案

  • 自建Kubernetes集群如何使用阿里云CSI

    自建Kubernetes集群如何使用阿里云CSI

  • 【kafka运维】数据迁移、分区副本重分

    【kafka运维】数据迁移、分区副本重分

腾讯云代理商
海外云服务器