middlewares

package
v1.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 7, 2023 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Cors

type Cors struct{}

Cors @Middleware 跨域中间件

func NewCors

func NewCors() *Cors

func (*Cors) OnRequest

func (*Cors) OnRequest(ctx *gin.Context)

type ErrorCatch

type ErrorCatch struct {
	RspErrorValue cue.Value
}

ErrorCatch @Middleware 错误捕获

func NewErrorCatch

func NewErrorCatch(rspErrorValue cue.Value) *ErrorCatch

func (*ErrorCatch) OnRequest

func (this *ErrorCatch) OnRequest(ctx *gin.Context)

type ILimiter

type ILimiter interface {
	Key(c *gin.Context) string
	GetBucket(key string) (*ratelimit.Bucket, bool)
	AddBucketsByUri(uri string, fillInterval, capacity, quantum int64) ILimiter
	AddBucketByConf() ILimiter
}

ILimiter 限流方法实现定义

var GlobalLimiter ILimiter

GlobalLimiter 全局限流规则

func NewUriLimiter

func NewUriLimiter() ILimiter

type LimitConfRules

type LimitConfRules struct {
	Rules map[string]*LimitOpt `mapstructure:"rateLimitRules"`
}

LimitConfRules 限流规则map

func (*LimitConfRules) InitDefaultConfig

func (this *LimitConfRules) InitDefaultConfig(vp *viper.Viper)

type LimitOpt

type LimitOpt struct {
	Interval int64 `mapstructure:"interval"` // 多长时间添加一次令牌
	Capacity int64 `mapstructure:"capacity"` // 令牌桶的容量
	Quantum  int64 `mapstructure:"quantum"`  // 到达定时器指定的时间,往桶里面加多少令牌
}

LimitOpt 限流配置

type RateLimit

type RateLimit struct{}

RateLimit @Middleware 限流中间件

func NewRateLimit

func NewRateLimit() *RateLimit

func (*RateLimit) OnRequest

func (this *RateLimit) OnRequest(ctx *gin.Context)

type RequestLog

type RequestLog struct{}

RequestLog @Middleware 记录请求日志

func NewRequestLog

func NewRequestLog() *RequestLog

func (*RequestLog) OnRequest

func (*RequestLog) OnRequest(ctx *gin.Context)

type UriLimiter

type UriLimiter struct {
	Rule *LimitConfRules
	// contains filtered or unexported fields
}

UriLimiter 基于路由的限流

func (*UriLimiter) AddBucketByConf

func (l *UriLimiter) AddBucketByConf() ILimiter

AddBucketByConf 通过配置文件批量添加限流规则

func (*UriLimiter) AddBucketsByUri

func (l *UriLimiter) AddBucketsByUri(uri string, fillInterval, capacity, quantum int64) ILimiter

AddBucketsByUri 添加一条路由限流规则

func (*UriLimiter) GetBucket

func (l *UriLimiter) GetBucket(key string) (*ratelimit.Bucket, bool)

GetBucket 根据路由key获取对应的buckets

func (*UriLimiter) Key

func (l *UriLimiter) Key(c *gin.Context) string

Key 获取路由key

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL