package middleware import ( "context" "github.com/gin-gonic/gin" "github.com/google/uuid" ) const RequestIDKey = "X-Request-ID" // RequestID middleware adds a unique request ID to each request func RequestID() gin.HandlerFunc { return func(c *gin.Context) { // Check if request already has an ID requestID := c.GetHeader(RequestIDKey) if requestID == "" { requestID = uuid.New().String() } // Set request ID in header and context c.Header(RequestIDKey, requestID) c.Set(RequestIDKey, requestID) // Add request ID to context for logging ctx := context.WithValue(c.Request.Context(), RequestIDKey, requestID) c.Request = c.Request.WithContext(ctx) c.Next() } }