コンテンツにスキップ

リクエスト ID

Request ID ミドルウェアはリクエストに一意の ID を生成します。

すべてのコアミドルウェアは middleware パッケージに含まれています:

import "github.com/labstack/echo/v5/middleware"
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)
}
}
e.Use(middleware.RequestIDWithConfig(middleware.RequestIDConfig{
Generator: func() string {
return customGenerator()
},
}))

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

フィールドの説明は英語のソースコードのコメントから生成されています。

パッケージのソースコードのフィールド
フィールド型説明ソース
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
パッケージのソースコードの関数
型ソース
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,
}

リクエスト元は X-Request-ID header で 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}