Files
go-skeleton/middlewares/request_id.go
T

26 lines
481 B
Go

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