接口幂等性的实现方式

引言

在项目开发的过程中,有时候类似于创建订单的接口,因为网络延迟的缘故,或者用户操作的原因,会导致对接口发起重复请求,而重复的请求不是我们想要的,为了防止这种情况发生,通常会对接口的幂等性作出要求,即:一次请求和多次请求的效果是一样的。

如何限制?

首先需要在前端做限制,比如按钮变灰、或按钮不可点击,也就是说,后面才会交给后端限制,在后端一般会有如下限制:

1、在数据库中建立唯一索引字段,保证插入的数据是唯一的一条

2、利用token检验,前端每次请求接口之前,先从后端获取一个token,在接下来的请求中携带token,一般放在请求头中,后端通过注解或者AOP的方式解析校验token,如果符合,则进行后续操作,如果不正确,则直接舍弃请求,或者返回自定义结果

3、使用数据的悲观锁或者乐观锁,悲观锁像for update锁住整个表,其他的sql无法操作;乐观锁可以在表中加一个字段,通常为version,有些类似于解决CAS中的ABA问题,就是每次更新的时候,比较version,version必须大于原有的值

4、还有一种简单的操作就是先查看数据库中有没有数据,有的话直接拒掉,没有的话再往下走

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值