package middleware
|
|
import (
|
"github.com/gin-gonic/gin"
|
"github.com/gofrs/uuid"
|
)
|
|
func RequestId() gin.HandlerFunc {
|
return func(ctx *gin.Context) {
|
// Check for incoming header, use it if exists
|
requestId := ctx.Request.Header.Get("X-Request-Id")
|
|
// Create request id with UUID4
|
if requestId == "" {
|
uid, _ := uuid.NewV4()
|
requestId = uid.String()
|
}
|
|
// Expose it for use in the application
|
ctx.Request.Header.Set("X-Request-Id", requestId)
|
|
// Set X-Request-Id header
|
ctx.Writer.Header().Set("X-Request-Id", requestId)
|
ctx.Next()
|
}
|
}
|