github.com/gofiber/fiber/v2@v2.47.0/middleware/requestid/requestid.go (about)

     1  package requestid
     2  
     3  import (
     4  	"github.com/gofiber/fiber/v2"
     5  )
     6  
     7  // New creates a new middleware handler
     8  func New(config ...Config) fiber.Handler {
     9  	// Set default config
    10  	cfg := configDefault(config...)
    11  
    12  	// Return new handler
    13  	return func(c *fiber.Ctx) error {
    14  		// Don't execute middleware if Next returns true
    15  		if cfg.Next != nil && cfg.Next(c) {
    16  			return c.Next()
    17  		}
    18  		// Get id from request, else we generate one
    19  		rid := c.Get(cfg.Header)
    20  		if rid == "" {
    21  			rid = cfg.Generator()
    22  		}
    23  
    24  		// Set new id to response header
    25  		c.Set(cfg.Header, rid)
    26  
    27  		// Add the request ID to locals
    28  		c.Locals(cfg.ContextKey, rid)
    29  
    30  		// Continue stack
    31  		return c.Next()
    32  	}
    33  }