howmuch/internal/pkg/middleware/requestid.go

30 lines
512 B
Go

package middleware
import (
"github.com/gin-gonic/gin"
"github.com/google/uuid"
)
const requestID = "X-Request-Id"
func RequestID() gin.HandlerFunc {
return func(ctx *gin.Context) {
var rid string
if rid = ctx.GetString(requestID); rid != "" {
// request id exists already
ctx.Next()
}
if rid = ctx.GetHeader(requestID); rid != "" {
ctx.Set(requestID, rid)
ctx.Next()
}
rid = uuid.NewString()
ctx.Set(requestID, rid)
ctx.Writer.Header().Add(requestID, rid)
ctx.Next()
}
}