リクエスト 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) }}カスタム設定
Section titled “カスタム設定”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 |
デフォルト設定
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}