1234567891011121314151617181920212223242526272829303132333435363738 |
- package middleware
- import (
- "github.com/gin-gonic/gin"
- uuid "github.com/satori/go.uuid"
- )
- const (
- XRequestIDKey = "X-Request-ID"
- )
- func RequestID() gin.HandlerFunc {
- return func(c *gin.Context) {
- // Check for incoming header, use it if exists
- rid := c.GetHeader(XRequestIDKey)
- if rid == "" {
- rid = uuid.Must(uuid.NewV4(), nil).String()
- c.Request.Header.Set(XRequestIDKey, rid)
- c.Set(XRequestIDKey, rid)
- }
- // Set XRequestIDKey header
- c.Writer.Header().Set(XRequestIDKey, rid)
- c.Next()
- }
- }
- // GetRequestIDFromContext returns 'RequestID' from the given context if present.
- func GetRequestIDFromContext(c *gin.Context) string {
- if v, ok := c.Get(XRequestIDKey); ok {
- if requestID, ok := v.(string); ok {
- return requestID
- }
- }
- return ""
- }
|