辅助中间件
概述
xHelper 提供请求上下文、HTTP 日志、Panic 恢复等辅助中间件
辅助中间件
xHelper 提供 Gin 框架的辅助中间件,包括请求上下文注入、HTTP 请求日志、Panic 恢复等。
import xHelper "github.com/bamboo-services/bamboo-base-go/major/helper"中间件列表
字段
类型
快速使用
func main() {
router := gin.New()
// 推荐的注册顺序
router.Use(xHelper.RequestContext()) // 1. 请求上下文(最先)
router.Use(xHelper.PanicRecovery()) // 2. Panic 恢复
router.Use(xHelper.HttpLogger()) // 3. HTTP 日志
// 其他中间件...
router.Use(xMiddle.ReleaseAllCors)
router.Use(xMiddle.AllowOption)
router.Use(xMiddle.ResponseMiddleware)
router.Run(":8080")
}中间件执行顺序
推荐配置
完整配置
func main() {
router := gin.New()
// 辅助中间件
router.Use(xHelper.RequestContext())
router.Use(xHelper.PanicRecovery())
router.Use(xHelper.HttpLogger())
// 业务中间件
router.Use(xMiddle.ReleaseAllCors)
router.Use(xMiddle.AllowOption)
router.Use(xMiddle.ResponseMiddleware)
// 资源注入
router.Use(InjectMiddleware(db, rdb, node))
router.Run(":8080")
}最小配置
// 最小必要配置
router.Use(xHelper.RequestContext()) // 请求追踪必需
router.Use(xHelper.PanicRecovery()) // 防止服务崩溃与其他组件配合
配合 xLog 使用
辅助中间件使用 NamedMIDE 日志标识:
// HttpLogger 中的日志
xLog.WithName(xLog.NamedMIDE).Info(ctx, "请求开始", ...)
xLog.WithName(xLog.NamedMIDE).Info(ctx, "请求完成", ...)
// PanicRecovery 中的日志
xLog.WithName(xLog.NamedMIDE).Error(ctx, "Panic 恢复", ...)配合 xResult 使用
PanicRecovery 使用 xBase.BaseResponse 返回统一格式:
{
"context": "abc123-uuid",
"output": "SERVER_INTERNAL_ERROR",
"code": 50000,
"message": "服务器内部错误",
"error_message": "具体错误描述"
}