Documentation
¶
Index ¶
- Variables
- func CombinedKeyExtractor(extractors ...func(*mist.Context) string) func(*mist.Context) string
- func IPInRangeKeyExtractor(networks []*net.IPNet) func(*mist.Context) string
- func IPKeyExtractor(ctx *mist.Context) string
- func New(limiter Limiter, options ...func(*Config)) mist.Middleware
- func ParseIPNetwork(cidr string) (*net.IPNet, error)
- func PathKeyExtractor(ctx *mist.Context) string
- func UserIDKeyExtractor(ctx *mist.Context) string
- func WithBurst(b int) func(*Config)
- func WithErrorHandler(fn func(*mist.Context, error)) func(*Config)
- func WithKeyExtractor(fn func(*mist.Context) string) func(*Config)
- func WithRate(r float64) func(*Config)
- func WithWhitelist(whitelist []string) func(*Config)
- type Config
- type Limiter
- type RedisLimiter
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrTooManyRequests 表示请求超过了限流阈值 ErrTooManyRequests = errors.New("too many requests") )
Functions ¶
func CombinedKeyExtractor ¶
CombinedKeyExtractor 组合多个键提取器的结果
func IPInRangeKeyExtractor ¶
IPInRangeKeyExtractor 基于IP范围的键提取器
func ParseIPNetwork ¶
ParseIPNetwork 将CIDR字符串解析为IP网络
func PathKeyExtractor ¶
PathKeyExtractor 基于请求路径的键提取器
func UserIDKeyExtractor ¶
UserIDKeyExtractor 基于用户ID的键提取器
func WithErrorHandler ¶
WithErrorHandler 设置错误处理器
func WithKeyExtractor ¶
WithKeyExtractor 设置键提取器
Types ¶
type Config ¶
type Config struct {
// 每秒允许的请求数
Rate float64
// 允许的突发请求数
Burst int
// 键提取器,从Context中提取限流键
KeyExtractor func(*mist.Context) string
// 自定义错误处理
ErrorHandler func(*mist.Context, error)
// 启用客户端IP限流
EnableIPRateLimit bool
// 使用真实IP(X-Forwarded-For或X-Real-IP)
UseRealIP bool
// 限流白名单,这些键不会被限流
Whitelist []string
}
Config 限流配置
Click to show internal directories.
Click to hide internal directories.