package middleware import ( "log" "net/http" "runtime/debug" "github.com/gin-gonic/gin" ) // Recovery 自定义恢复中间件(返回统一格式) func Recovery() gin.HandlerFunc { return func(c *gin.Context) { defer func() { if err := recover(); err != nil { log.Printf("[PANIC] %v\n%s", err, debug.Stack()) c.JSON(http.StatusInternalServerError, gin.H{ "code": 500, "message": "internal server error", }) c.Abort() } }() c.Next() } }