2020-07-13 20:33:20 +08:00
|
|
|
package middleware
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/gin-gonic/gin"
|
2023-11-28 22:18:28 +08:00
|
|
|
"github.com/google/uuid"
|
2020-07-13 20:33:20 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
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 == "" {
|
2023-11-28 22:18:28 +08:00
|
|
|
requestId = uuid.NewString()
|
2020-07-13 20:33:20 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 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()
|
|
|
|
}
|
|
|
|
}
|