27 lines
542 B
Go
27 lines
542 B
Go
![]() |
package middleware
|
||
|
|
||
|
import (
|
||
|
"github.com/gin-gonic/gin"
|
||
|
"github.com/satori/go.uuid"
|
||
|
)
|
||
|
|
||
|
func RequestId() gin.HandlerFunc {
|
||
|
return func(c *gin.Context) {
|
||
|
// Check for incoming header, use it if exists
|
||
|
requestId := c.Request.Header.Get("X-Request-Id")
|
||
|
|
||
|
// Create request id with UUID4
|
||
|
if requestId == "" {
|
||
|
u4 := uuid.NewV4()
|
||
|
requestId = u4.String()
|
||
|
}
|
||
|
|
||
|
// Expose it for use in the application
|
||
|
c.Set("X-Request-Id", requestId)
|
||
|
|
||
|
// Set X-Request-Id header
|
||
|
c.Writer.Header().Set("X-Request-Id", requestId)
|
||
|
c.Next()
|
||
|
}
|
||
|
}
|