package middleware import ( "github.com/gin-gonic/gin" "github.com/google/uuid" ) // requestIDHeader 请求 ID 响应头名称 const requestIDHeader = "X-Request-Id" // requestIDContextKey context 中存储请求 ID 的键 const requestIDContextKey = "request_id" // RequestID 注入请求 ID 中间件。 // 从 X-Request-Id 头读取,无则生成 uuid,写入 context 与响应头。 func RequestID() gin.HandlerFunc { return func(c *gin.Context) { rid := c.GetHeader(requestIDHeader) if rid == "" { rid = uuid.New().String() } c.Set(requestIDContextKey, rid) c.Writer.Header().Set(requestIDHeader, rid) c.Next() } }