什么是幂等?


什么是幂等?

什么是幂等?经常听到这个词,但不太清楚具体是什么含义。最近看书看到了,就总结了一下。

 

幂等:其实就是我们常说的“接口重复提交问题”。如果接口没有重复提交问题,则说接口是幂等的;反之则说是“非幂等”。

举例:有一个新增管理员接口,用户填写好表单后,就点击一下提交。由于网络原因,页面出现了延迟,用户以为没点到,于是就又点了一下提交。此时,等于同一个操作,发送了两条请求,若数据库最终只新增了一条管理员数据,则接口幂等,反之则“非幂等”。

非幂等的场景?

1、前端页面重复提交表单。

2、不法分子恶意刷单。

3、消息进行了重复消费。


保证幂等的方法?

1、设置防重token令牌。

还是以新增管理员做例子。在进入到新增页面时,服务端先生成一个token令牌,放入到redis中并返回给页面。页面提交表单时,把token令牌一起提交,服务端拿到token令牌后就判断redis中是否存在?若存在则删除redis记录并进行新增操作;若不存在,则说明时重复提交的请求,不进行任何操作。

2、页面防重复点击设计。

用户点击按钮后,就将按钮设置为不可点击状态,避免用户重复操作。(注:这种方法只能避免正常用户操作的情况,不能防止恶意攻击的情况。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值