1. 导入依赖
<!-- 限制请求速率 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1-jre</version>
</dependency>
2. 案例使用
// 例如,创建一个每秒允许生成1个验证码的限流器
RateLimiter rateLimiter = RateLimiter.create(1.0); // 参数表示每秒令牌生成速率
// 生成验证码,返回的是 base64
@GetMapping("/getCaptchaBase64")
@ApiOperation("返回base64验证码接口")
public Object getCaptchaBase64(HttpServletRequest request, HttpServletResponse response) {
if (!rateLimiter.tryAcquire()) {
// 如果获取令牌失败(即超过限流阈值)
Map<String, String> result = new HashMap<>();
result.put("message", "请求过于频繁,请稍后再试");
return result;
}
其他代码...
}