Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Middleware ¶
func Middleware(config Config, limiter Limiter) gin.HandlerFunc
Middleware 创建速率限制中间件
func PerEndpointMiddleware ¶
func PerEndpointMiddleware(config Config, limiter Limiter) gin.HandlerFunc
PerEndpointMiddleware 基于端点的速率限制
func PerUserMiddleware ¶
func PerUserMiddleware(config Config, limiter Limiter) gin.HandlerFunc
PerUserMiddleware 基于用户的速率限制
Types ¶
type Config ¶
type Config struct {
Enabled bool
RequestsPerIP int // 每个 IP 的请求限制
WindowSize time.Duration // 时间窗口
BurstSize int // 突发大小(令牌桶容量)
KeyFunc func(*gin.Context) string // 自定义 key 提取函数
Algorithm string // 算法:token_bucket 或 sliding_window
}
Config 速率限制配置
type Limiter ¶
type Limiter interface {
// Allow 检查是否允许请求
Allow(key string) bool
// Reset 重置指定 key 的限制
Reset(key string)
// GetInfo 获取限制信息
GetInfo(key string) *LimitInfo
}
Limiter 速率限制器接口
func NewLimiterFromConfig ¶
NewLimiterFromConfig 从配置创建限流器
type SlidingWindowLimiter ¶
type SlidingWindowLimiter struct {
// contains filtered or unexported fields
}
SlidingWindowLimiter 滑动窗口限流器
func NewSlidingWindowLimiter ¶
func NewSlidingWindowLimiter(limit int, windowDuration time.Duration) *SlidingWindowLimiter
NewSlidingWindowLimiter 创建滑动窗口限流器
func (*SlidingWindowLimiter) Allow ¶
func (l *SlidingWindowLimiter) Allow(key string) bool
Allow 检查是否允许请求
func (*SlidingWindowLimiter) GetInfo ¶
func (l *SlidingWindowLimiter) GetInfo(key string) *LimitInfo
GetInfo 获取限制信息
func (*SlidingWindowLimiter) Reset ¶
func (l *SlidingWindowLimiter) Reset(key string)
Reset 重置指定 key 的限制
type TokenBucketLimiter ¶
type TokenBucketLimiter struct {
// contains filtered or unexported fields
}
TokenBucketLimiter 令牌桶限流器
func NewTokenBucketLimiter ¶
func NewTokenBucketLimiter(rate, capacity int, window time.Duration) *TokenBucketLimiter
NewTokenBucketLimiter 创建令牌桶限流器
func (*TokenBucketLimiter) Allow ¶
func (l *TokenBucketLimiter) Allow(key string) bool
Allow 检查是否允许请求
func (*TokenBucketLimiter) GetInfo ¶
func (l *TokenBucketLimiter) GetInfo(key string) *LimitInfo
GetInfo 获取限制信息
func (*TokenBucketLimiter) Reset ¶
func (l *TokenBucketLimiter) Reset(key string)
Reset 重置指定 key 的限制
Click to show internal directories.
Click to hide internal directories.