12345678910111213141516171819202122232425262728293031 |
- 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()
- }
- }
|