package middlewares import ( "crypto/rand" "encoding/hex" "github.com/gin-gonic/gin" ) const RequestIDHeader = "X-Request-ID" func RequestID() gin.HandlerFunc { return func(c *gin.Context) { requestID := c.GetHeader(RequestIDHeader) if requestID == "" { value := make([]byte, 16) if _, err := rand.Read(value); err == nil { requestID = hex.EncodeToString(value) } } c.Set("request_id", requestID) c.Header(RequestIDHeader, requestID) c.Next() } }