竹简文档
中间件

概述

xMiddle 提供 CORS、OPTIONS 预检、统一响应等常用中间件

中间件

xMiddle 提供 Gin 框架常用的中间件,包括 CORS 跨域处理、OPTIONS 预检请求、统一响应处理等。

import xMiddle "github.com/bamboo-services/bamboo-base-go/major/middleware"

中间件列表

字段

类型

快速使用

main.go
func main() {
    router := gin.Default()

    // 按顺序注册中间件
    router.Use(xMiddle.ReleaseAllCors)      // 1. 设置 CORS 头
    router.Use(xMiddle.AllowOption)          // 2. 处理 OPTIONS 请求
    router.Use(xMiddle.ResponseMiddleware)   // 3. 统一响应处理

    // 路由定义...
    router.Run(":8080")
}

中间件执行顺序

推荐配置

开发环境

// 开发环境:全开放 CORS
router.Use(xMiddle.ReleaseAllCors)
router.Use(xMiddle.AllowOption)
router.Use(xMiddle.ResponseMiddleware)

生产环境

// 生产环境:建议自定义 CORS 配置
router.Use(customCorsMiddleware())  // 自定义 CORS
router.Use(xMiddle.AllowOption)
router.Use(xMiddle.ResponseMiddleware)

与其他组件配合

配合 xResult 使用

handler/user.go
func GetUser(ctx *gin.Context) {
    user, err := userService.FindByID(ctx, id)
    if err != nil {
        // 使用 xError 抛出错误,ResponseMiddleware 自动处理
        ctx.Error(xError.NewError(ctx.Request.Context(), xError.NotFound, "用户不存在", true))
        return
    }

    // 使用 xResult 输出成功响应
    xResult.Success(ctx, user)
}

配合 xLog 使用

中间件内部使用 NamedMIDE 日志标识:

// AllowOption 中的日志
xLog.WithName(xLog.NamedMIDE).Debug(ctx, "检测到 OPTIONS 请求,继续处理")

下一步

On this page