acme-mana/src/server/http_handler/error.go
2024-12-27 16:50:51 +08:00

35 lines
719 B
Go

package http_handler
import (
"acme-mana/src/server/model"
"github.com/gin-gonic/gin"
"net/http"
)
// GlobalErrorHandler 是一个全局错误处理器中间件
func GlobalErrorHandler() gin.HandlerFunc {
return func(c *gin.Context) {
// 继续执行后续中间件和处理函数
c.Next()
// 获取上下文中的错误
if err, ok := c.Get("error"); ok {
switch typedErr := err.(type) {
case *model.AppError:
c.JSON(200, &model.Result{
Code: typedErr.Code,
Message: typedErr.Message,
Data: nil,
})
default:
c.JSON(http.StatusInternalServerError, gin.H{
"error": "Internal Server Error",
"success": false,
})
}
c.Abort()
return
}
}
}