1.自定义注解+Aop实现
我们通过获取用户ip及访问的接口来判断他是否重复提交,假如这个ip在一段时间内容多次访问这个接口,我们则认为是重复提交,我们将重复提交的请求直接处理即可,不让访问目标接口。
2.AOP处理逻辑
我们将ip+接口地址作为key,随机生成UUID作为value,存入redis。每次请求进来,根据key查询redis,如果存在则说明是重复提交,抛出异常,如果不存在,则是正常提交,将key存入redis。
3.接口添加自定义注解
在接口上添加上我们自定义的注解@NoRepeatSubmit
4.接口测试
我们在浏览器中连续请求两次接口。发现第一次接口响应正常内容:1,第二次接口响应了不可重复提交的异常信息。1s之后再点击接口,发现又响应了正常内容。
至此,这种防止重复提交的方式就介绍完了,这样我们就完美防止了接口重复提交。