面试碎碎念之怎么保证接口的幂等性
作者:互联网
一、什么是接口幂等性
接口幂等性是指,同一个接口,多次发出同一个请求,必须保证操作只执行一次。调用接口发生异常,总是会重复尝试,就会造成系统无法承担,因此要避免这种情况。比如常用的下载资源接口,订单支付接口等,重复操作会造成资源浪费和订单重复。
二、什么情况会出现接口幂等问题
1、网络波动,会造成请求的重复。
2、用户操作,有意无意的触发多次下单请求。
3、页面重复刷新或者浏览器后退导致重复提交表单。
三、如何保证接口幂等性
根据产生原因也可以分为两个方向:
1、客户端防止重复
2、服务端进行校验
具体操作:
- (1)按钮只可操作一次:有一些操作提交之后,按钮置灰或者置为loading状态,不让用户重复点击。
- (2)token机制:用户浏览器进入页面后,页面表单中会有服务端下发的token,表单的提交都会带上这个token,后端会根据这个token避免重复。
- (3)重定向模式:提交后执行页面重定向另外一个页面,可以避免F5刷新导致的重复提交,也不会出现浏览器表单重复提交以及浏览器前进和后退导致的重复提交问题。
- (4)使用唯一索引:利用数据库唯一索引,插入数据的时候,如果重复,db则会抛出异常。
- (5)分布式锁:利用redis的分布式锁,插入数据或者更新数据的时候,要先获锁,然后在做操作,然后释放锁。
- (6)缓冲队列:将请求都快速的接受放到队列中,用一个异步任务来处理队列中的重复请求,给过滤掉。但是会有时延。
标签:重复,接口,表单,面试,token,提交,碎碎念,页面 来源: https://www.cnblogs.com/welan/p/16693490.html