first commit

This commit is contained in:
2026-10-25 20:27:59 +08:00
commit 332b7dcd08
27 changed files with 1708 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
package middleware
import (
"log/slog"
"net/http"
"runtime/debug"
"github.com/gin-gonic/gin"
)
// Recovery 捕获 handler 中的 panic,记录结构化日志并以 500 响应,
// 符合规范:recover 仅允许用于框架中间件。
func Recovery() gin.HandlerFunc {
return func(c *gin.Context) {
defer func() {
if r := recover(); r != nil {
slog.Error("panic recovered",
slog.String("path", c.Request.URL.Path),
slog.Any("err", r),
slog.String("stack", string(debug.Stack())),
)
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{
"code": 50000,
"msg": "internal server error",
"data": nil,
})
}
}()
c.Next()
}
}