初始版本,工具基础类
This commit is contained in:
36
middleware/chain.go
Normal file
36
middleware/chain.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package middleware
|
||||
|
||||
import "net/http"
|
||||
|
||||
// Chain 中间件链
|
||||
type Chain struct {
|
||||
middlewares []func(http.Handler) http.Handler
|
||||
}
|
||||
|
||||
// NewChain 创建新的中间件链
|
||||
func NewChain(middlewares ...func(http.Handler) http.Handler) *Chain {
|
||||
return &Chain{
|
||||
middlewares: middlewares,
|
||||
}
|
||||
}
|
||||
|
||||
// Then 将中间件链应用到处理器
|
||||
func (c *Chain) Then(handler http.Handler) http.Handler {
|
||||
final := handler
|
||||
for i := len(c.middlewares) - 1; i >= 0; i-- {
|
||||
final = c.middlewares[i](final)
|
||||
}
|
||||
return final
|
||||
}
|
||||
|
||||
// ThenFunc 将中间件链应用到处理器函数
|
||||
func (c *Chain) ThenFunc(handler http.HandlerFunc) http.Handler {
|
||||
return c.Then(handler)
|
||||
}
|
||||
|
||||
// Append 追加中间件
|
||||
func (c *Chain) Append(middlewares ...func(http.Handler) http.Handler) *Chain {
|
||||
c.middlewares = append(c.middlewares, middlewares...)
|
||||
return c
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user