alice包简介

type Chain struct {
    //一些字段
}

该结构体的行为就像是一个初始化的http.Handler的列表,该结构体一旦被创建,将会是不可变的,并且永远保持这初始化时相同的执行顺序

func New(constructors ...Constructor)Chain

依据给定的中间件列表,创建一个新的chain,新的服务没有其他的函数,初始化之后,在中间件之后只能调用Then函数

func (c Chain) Append(constructors ...Constructor)Chain

扩展已经存在的中间件,新添加的将会加入末尾

//请求经过的顺序为:m1,m2
stdChain := alice.New(m1,m2)

//请求经过的中间件为:m1,m2,m3,m4
extChain := stdChain.Append(m3,m4)
func (c Chain) Extend(chain Chain)Chain

将一个chain添加到另外一个chain上

//请求经过的顺序为:m1,m2
stdChain := alice.New(m1,m2)
ext1 := alice.New(m3,m4)
//请求经过的中间件为:m1,m2,m3,m4
extChain := stdChain.Extend(ext1)
func (c Chain) Then(h http.Handler) http.Handler

经过中间之后,所需要进入的处理句柄,其中New(m1,m2,m3).Then(h)等价于m1(m2(m3(h)))

func (c Chain) ThenFunc(fn http.HandlerFunc) http.Handler
type Constructor func(http.Handler)http.Handler

results matching ""

    No results matching ""