リクエスト ID
Request ID ミドルウェアはリクエストに一意の ID を生成します。
e.Use(middleware.RequestID())例:
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) }}カスタム設定
Section titled “カスタム設定”e.Use(middleware.RequestIDWithConfig(middleware.RequestIDConfig{ Generator: func() string { return customGenerator() },}))type RequestIDConfig struct { // Skipper defines a function to skip middleware. Skipper Skipper
// Generator defines a function to generate an ID. // Optional. Default value random.String(32). Generator func() string
// RequestIDHandler defines a function which is executed for a request id. RequestIDHandler func(c *echo.Context, requestID string)
// TargetHeader defines what header to look for to populate the id. // Optional. Default value is `X-Request-Id`. TargetHeader string}デフォルト設定
Section titled “デフォルト設定”// Effective defaults applied when fields are left unset.RequestIDConfig{ Skipper: DefaultSkipper, Generator: generator, // random 32-character string TargetHeader: echo.HeaderXRequestID,}ID を設定する
Section titled “ID を設定する”リクエスト元は X-Request-ID header で ID を設定できます。
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}