Pular para o conteúdo

Request ID

O middleware Request ID gera um ID único para um request.

Todo o middleware principal fica no pacote middleware:

import "github.com/labstack/echo/v5/middleware"
e.Use(middleware.RequestID())

Exemplo:

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)
}
}
e.Use(middleware.RequestIDWithConfig(middleware.RequestIDConfig{
Generator: func() string {
return customGenerator()
},
}))

RequestIDConfig · github.com/labstack/echo/v5@5196b9b

As descrições dos campos são geradas dos comentários do código-fonte em inglês.

Campos do código-fonte
CampoTipoDescriçãoCódigo
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
Funções do código-fonte
TipoCódigo
func RequestID() echo.MiddlewareFunc L30
func RequestIDWithConfig(config RequestIDConfig) echo.MiddlewareFunc L37
// Effective defaults applied when fields are left unset.
RequestIDConfig{
Skipper: DefaultSkipper,
Generator: generator, // random 32-character string
TargetHeader: echo.HeaderXRequestID,
}

Você pode definir o ID a partir do requester com o header X-Request-ID.

Terminal window
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}