竹简文档
辅助中间件

概述

xHelper 提供请求上下文、HTTP 日志、Panic 恢复等辅助中间件

辅助中间件

xHelper 提供 Gin 框架的辅助中间件,包括请求上下文注入、HTTP 请求日志、Panic 恢复等。

import xHelper "github.com/bamboo-services/bamboo-base-go/major/helper"

中间件列表

字段

类型

快速使用

main.go
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")
}

中间件执行顺序

推荐配置

完整配置

main.go
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": "具体错误描述"
}

下一步

On this page