请求 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 |
// 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。
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}