接口限流
youlai-gin 内置基于 Redis 的 IP 限流中间件,用于防止恶意请求和系统过载。
使用方式
全局唯一注册点(main.go),无需在路由分组中重复注册:
go
// main.go
import "youlai-gin/internal/middleware"
func main() {
r := gin.New()
// 全局限流:默认每个 IP 10 次/秒
r.Use(middleware.RateLimitByIP())
// 端口从 configs/*.yaml 的 server.port 读取
r.Run(fmt.Sprintf(":%d", config.Cfg.Server.Port))
}限流规则
- 注册方式:仅在
main.go全局注册一次,不在路由分组中重复注册 - 计数窗口:1 秒
- 阈值:默认每个 IP 10 次/秒
- 实现方式:
INCR+EXPIRE,Redis 异常时自动放行避免影响可用性 - 错误码:超限返回 HTTP
429
相关实现
internal/middleware/rate_limiter.go
