package middleware import ( "github.com/gin-gonic/gin" "github.com/google/uuid" ) const RequestIDHeader = "X-Request-ID" const requestIDKey = "request_id" func RequestID() gin.HandlerFunc { return func(c *gin.Context) { rid := c.GetHeader(RequestIDHeader) if rid == "" { rid = uuid.New().String() } c.Set(requestIDKey, rid) c.Header(RequestIDHeader, rid) c.Next() } } func RequestIDFromGin(c *gin.Context) string { if rid, ok := c.Get(requestIDKey); ok { return rid.(string) } return "" }