场景
SpringBoot搭建的项目需要对开放的接口进行防刷限制,不同接口指定多少秒内可以请求指定次数。
比如下方限制接口一秒内最多请求一次。
注:
博客:
霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主
实现
1、实现思路
首先自定义注解,添加时间区间和最大请求次数字段。
然后自定义拦截器拦截方法上面是否有自定义的注解,如果有则获取请求的url,并作为redis中存储的key,区间区间即作为redis
的key的过期时间,每次请求累加次数并存储到redis中,判断在redis的key有效期内超过最大请求次数,则返回请求频繁的响应。
2、首先自定义注解实现
import java.lang.annotation.ElementType;
import java.lang.annotation.Reten