Request ID
Request ID middleware generates a unique ID for a request.
All core middleware lives in the middleware package:
import "github.com/labstack/echo/v5/middleware"e.Use(middleware.RequestID())Example:
func main() { e := echo.New()
e.Use(middleware.RequestID())
e.GET("/", func(c *echo.Context) error { return c.String(http.StatusOK, c.Response().Header().Get(echo.HeaderXRequestID)) })
if err := e.Start(":8080"); err != nil { e.Logger.Error("failed to start server", "error", err) }}Custom configuration
Section titled “Custom configuration”e.Use(middleware.RequestIDWithConfig(middleware.RequestIDConfig{ Generator: func() string { return customGenerator() },}))Configuration
Section titled “Configuration”RequestIDConfig · github.com/labstack/echo/v5@5196b9b
| Field | Type | Description | Source |
|---|---|---|---|
Skipper | Skipper | Skipper defines a function to skip middleware. | L13 |
Generator | func() string | Generator defines a function to generate an ID. Optional. Default value random.String(32). | L17 |
RequestIDHandler | func(c *echo.Context, requestID string) | RequestIDHandler defines a function which is executed for a request id. | L20 |
TargetHeader | string | TargetHeader defines what header to look for to populate the id. Optional. Default value is `X-Request-Id` | L24 |
Default configuration
Section titled “Default configuration”// Effective defaults applied when fields are left unset.RequestIDConfig{ Skipper: DefaultSkipper, Generator: generator, // random 32-character string TargetHeader: echo.HeaderXRequestID,}Set ID
Section titled “Set ID”You can set the ID from the requester with the X-Request-ID header.
Request
Section titled “Request”curl -H "X-Request-ID: 3" --compressed -v "http://localhost:1323/?my=param"{"time":"2017-11-13T20:26:28.6438003+01:00","id":"3","remote_ip":"::1","host":"localhost:1323","method":"GET","uri":"/?my=param","my":"param","status":200, "latency":0,"latency_human":"0s","bytes_in":0,"bytes_out":13}