package middleware import "net/http" // Chain 用于组合多个中间件 func Chain(middlewares ...func(http.Handler) http.Handler) func(http.Handler) http.Handler { return func(next http.Handler) http.Handler { for i := len(middlewares) - 1; i >= 0; i-- { next = middlewares[i](next) } return next } } // Recovery 中间件用于捕获 panic func Recovery(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { defer func() { if err := recover(); err != nil { http.Error(w, "Internal Server Error", http.StatusInternalServerError) } }() next.ServeHTTP(w, r) }) }