我们公司最近遇到重复请求的问题.当用户在网络较差或者在请求完成前取消请求后再次请求,可能出现数据的重复插入.
针对这个问题,前端做了一些时间上的控制(控制点击频率).但是如果用户在请求过程中取消,则可以再次发送.所有需要考虑后台来做限制.
目前方案思路如下:
1. 后台在发起发布请求前,先去后台获取一个id(可以传入需要请求的url).当前用户的这个id会在redis中保存一段时间(1分钟),当用户再次请求时,返回请求过于频繁的错误.
2. 用户携带此id去请求发布接口,流程和原来相同.请求结果不会删除id.所有发布成功后的间隔是一分钟.
根据如上方案,测试结果是可行的.
此需求实际上限制某个接口的请求频率.