middleware

package
v1.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 28, 2026 License: MIT Imports: 27 Imported by: 0

Documentation

Overview

Package middleware 提供 HTTP 中间件 本文件实现 CORS(跨域资源共享)中间件

Package middleware 提供Gin框架的中间件功能 本文件实现了全局异常处理器中间件,用于捕获和处理HTTP请求过程中的异常

Package middleware 提供Gin框架的中间件功能 本文件实现了 OpenTelemetry 链路追踪中间件,为每个 HTTP 请求创建追踪 Span

Package middleware 提供 Gin 框架的中间件功能 本文件实现了 Prometheus 指标采集中间件

Package middleware 提供 HTTP 中间件 本文件实现限流中间件,用于控制 API 请求速率

Package middleware 提供Gin框架的中间件功能 本文件实现了请求超时处理器中间件,用于控制API请求的执行时间并记录响应时长

Package middleware 提供Gin框架的中间件功能 本文件实现了请求追踪ID处理器中间件,为每个HTTP请求生成唯一的追踪标识符

Package middleware 提供Gin框架的中间件功能 本文件实现了请求追踪日志处理器中间件,用于记录HTTP请求的详细信息和执行时间

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CORSHandler

func CORSHandler() gin.HandlerFunc

CORSHandler 跨域资源共享中间件 用于处理浏览器的跨域请求,支持预检请求(OPTIONS) 配置项通过 app.BaseConfig.CORS 进行设置

功能特性: - 支持配置允许的来源(支持通配符 *) - 支持配置允许的 HTTP 方法 - 支持配置允许的请求头 - 支持配置暴露的响应头 - 支持配置是否允许携带凭证(Cookie) - 支持配置预检请求缓存时间

使用示例:

在配置文件中启用:
cors:
  enabled: true
  allowOrigins:
    - "http://localhost:3000"
    - "https://example.com"
  allowMethods:
    - "GET"
    - "POST"
  allowHeaders:
    - "Content-Type"
    - "Authorization"

func CloseLimiter

func CloseLimiter() error

CloseLimiter 关闭限流器

func ExceptionHandler

func ExceptionHandler() gin.HandlerFunc

ExceptionHandler 全局异常处理器中间件 该中间件会: 1. 使用defer和recover机制捕获所有panic异常 2. 根据异常类型选择不同的处理策略 3. 记录异常信息和堆栈跟踪 4. 返回统一的错误响应格式 5. 中断请求处理流程 返回:

  • gin.HandlerFunc: Gin中间件函数

func GetLimiter

func GetLimiter() ratelimit.Limiter

GetLimiter 获取全局限流器实例

func OtelTraceHandler

func OtelTraceHandler() gin.HandlerFunc

OtelTraceHandler OpenTelemetry 链路追踪中间件 该中间件会: 1. 从请求头中提取上游服务的追踪上下文(支持 W3C Trace Context 标准) 2. 为当前请求创建新的 Span 3. 将追踪信息存储到 Gin 上下文中 4. 将追踪 ID 添加到响应头中 5. 记录请求的关键信息(方法、路径、状态码等) 返回:

  • gin.HandlerFunc: Gin中间件函数

func PrometheusHandler

func PrometheusHandler() gin.HandlerFunc

PrometheusHandler Prometheus 指标采集中间件 该中间件会: 1. 统计 HTTP 请求总数 2. 统计请求耗时分布 3. 统计当前处理中的请求数

func RateLimitHandler

func RateLimitHandler() gin.HandlerFunc

RateLimitHandler 限流中间件 根据配置的规则对请求进行限流

func TimeoutHandler

func TimeoutHandler() gin.HandlerFunc

TimeoutHandler 创建一个同时处理超时和记录请求响应时长的中间件 该中间件使用 context.WithTimeout 实现协作式超时控制,避免在 goroutine 中操作 gin.Context 导致的并发安全问题。

超时上下文会传播到下游的 DB 查询、HTTP 调用等 context-aware 操作, 处理函数应通过 c.Request.Context() 获取上下文并传递给 I/O 操作,以实现超时自动中断。

执行流程: 1. 从配置中获取 API 超时时间,若为 0 则跳过超时控制 2. 通过 context.WithTimeout 为请求设置截止时间 3. 同步调用 c.Next() 执行后续处理链 4. 检查上下文是否超时,未写入响应时返回 408 5. 记录响应时长,对接近超时的请求发出警告

返回:

  • gin.HandlerFunc: Gin中间件函数

func TraceIdHandler

func TraceIdHandler() gin.HandlerFunc

TraceIdHandler 请求追踪ID处理器中间件 该中间件会: 1. 尝试从上游请求头中读取已有的 trace ID(支持 X-Trace-ID、X-Request-ID) 2. 若上游未传递 trace ID,则生成新的 UUID 作为追踪ID 3. 将追踪ID存储在Gin上下文中,供后续中间件和处理器使用 4. 将追踪ID添加到HTTP响应头中,方便客户端进行请求追踪 返回:

  • gin.HandlerFunc: Gin中间件函数

func TraceLogHandler

func TraceLogHandler() gin.HandlerFunc

TraceLogHandler 请求追踪日志处理器中间件 该中间件会: 1. 记录请求开始时间 2. 执行请求处理流程 3. 记录请求结束时间并计算响应时长 4. 收集请求的详细信息(方法、URL、状态码、客户端IP等) 5. 解析请求表单数据并转换为JSON格式 6. 获取追踪ID和请求ID 7. 收集错误信息 8. 使用结构化日志记录所有信息 返回:

  • gin.HandlerFunc: Gin中间件函数

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL