初始版本,工具基础类

This commit is contained in:
2025-11-30 13:02:34 +08:00
commit ea4e2e305d
37 changed files with 7480 additions and 0 deletions

36
middleware/chain.go Normal file
View 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
}