ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

面试碎碎念之怎么保证接口的幂等性

2022-09-14 16:35:11  阅读:228  来源: 互联网

标签:重复 接口 表单 面试 token 提交 碎碎念 页面


一、什么是接口幂等性

接口幂等性是指,同一个接口,多次发出同一个请求,必须保证操作只执行一次。调用接口发生异常,总是会重复尝试,就会造成系统无法承担,因此要避免这种情况。比如常用的下载资源接口,订单支付接口等,重复操作会造成资源浪费和订单重复。

二、什么情况会出现接口幂等问题

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有