middleware

package
v0.0.0-...-40ba262 Latest Latest
Warning

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

Go to latest
Published: Aug 30, 2019 License: MIT Imports: 11 Imported by: 0

README

Middleware

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	MaxConsecutiveSuccesses uint32 = 10
	MaxConsecutiveFailures  uint32 = 10
	// CircuitBreakerStatues 定义熔断状态字符串
	StaticHtml            = ""
	CircuitBreakerStatues = []string{"closed", "half-open", "open"}
)

半开状态时最大连续失败和最大连续成功次数。

Functions

func GetRealClientIP

func GetRealClientIP(r *http.Request) string

GetRealClientIP 函数获取http请求的真实ip

func GetStringDefaultInt

func GetStringDefaultInt(str string, n int) int

GetStringDefaultInt 实现字符串转换成int。

func MatchStar

func MatchStar(obj, patten string) bool

MatchStar 模式匹配对象,允许使用带'*'的模式。

func NewLoggerFunc

func NewLoggerFunc() erouter.Middleware

NewLoggerFunc 函数创建一个日志输出中间件。

func NewRecoverFunc

func NewRecoverFunc() erouter.Middleware

NewRecoverFunc 函数创建一个异常捕捉中间件。

Types

type CircuitBreaker

type CircuitBreaker struct {
	Mapping       map[int]string             `json:"mapping"`
	Routes        map[string]*Route          `json:"routes"`
	OnStateChange func(string, State, State) `json:"-"`
	// contains filtered or unexported fields
}

CircuitBreaker 定义熔断器。

func NewCircuitBreaker

func NewCircuitBreaker() *CircuitBreaker

NewCircuitBreaker 函数创建一个熔断器

func (*CircuitBreaker) InjectRoutes

func (cb *CircuitBreaker) InjectRoutes(r erouter.RouterMethod) *CircuitBreaker

InjectRoutes 方法给给路由器注入熔断器的路由。

func (*CircuitBreaker) NewMiddleware

func (cb *CircuitBreaker) NewMiddleware() erouter.Middleware

NewMiddleware 创建一个熔断器中间件。

type Cors

type Cors struct {
	// contains filtered or unexported fields
}

Cors 定义Cors对象。

func NewCors

func NewCors(origins []string, headers map[string]string) *Cors

NewCors 函数创建应该Cors对象。

如果origins为空,设置为*。 如果Access-Control-Allow-Methods header为空,设置为*。

func (*Cors) NewMiddleware

func (cors *Cors) NewMiddleware() erouter.Middleware

NewMiddleware 函数创建应该CORES中间件。

type Rate

type Rate struct {
	Rate  rate.Limit
	Burst int
	// contains filtered or unexported fields
}

Rate 定义限流器

func NewRate

func NewRate(r2, burst int) *Rate

NewRate 创建一个限流器。

周期内增加r2个令牌,最多拥有burst个。

func (*Rate) AddVisitor

func (r *Rate) AddVisitor(ip string) *rate.Limiter

AddVisitor Change the the map to hold values of the type visitor.

func (*Rate) GetVisitor

func (r *Rate) GetVisitor(ip string) *rate.Limiter

GetVisitor 方法通过ip获得*rate.Limiter。

func (*Rate) NewMiddleware

func (r *Rate) NewMiddleware() erouter.Middleware

NewMiddleware 返回一个限流处理函数。

type ResponseWriteStatuer

type ResponseWriteStatuer interface {
	http.ResponseWriter
	GetStatue() int
}

ResponseWriteStatuer 定义http.ResponseWriter获得状态码的接口。

type ResponseWriter

type ResponseWriter struct {
	http.ResponseWriter
	// contains filtered or unexported fields
}

ResponseWriter 封装http.ResponseWriter对象,用于获得写入的状态码。

func (*ResponseWriter) GetStatue

func (w *ResponseWriter) GetStatue() int

GetStatue 获取响应的状态码。

func (*ResponseWriter) WriteHeader

func (w *ResponseWriter) WriteHeader(statusCode int)

WriteHeader 实现http.ResponseWriter的WriteHeader方法,将响应状态码记录。

type Route

type Route struct {
	Id                   int
	Name                 string
	State                State
	LastTime             time.Time
	TotalSuccesses       uint64
	TotalFailures        uint64
	ConsecutiveSuccesses uint32
	ConsecutiveFailures  uint32
	OnStateChange        func(string, State, State) `json:"-"`
	// contains filtered or unexported fields
}

Route 定义单词路由的熔断数据。

func (*Route) IsDeny

func (c *Route) IsDeny() (b bool)

IsDeny 方法实现熔断器条目是否可以通过。

type State

type State int8

State 是熔断器状态。

const (
	CircuitBreakerStatueClosed State = iota
	CircuitBreakerStatueHalfOpen
	CircuitBreakerStatueOpen
)

定义熔断器状态。

func (State) MarshalText

func (state State) MarshalText() (text []byte, err error)

MarshalText 方法实现encoding.TextMarshaler接口。

func (State) String

func (state State) String() string

String 方法实现string接口

Jump to

Keyboard shortcuts

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