1

我有一个审计日志中间件,它试图记录每个 grpc 函数调用的详细信息。目前我可以获得请求方法和网址。但我无法获得 Post body 中的值。

此中间件还用于记录包含不同帖子正文的多个功能。这可能吗?

这就是我现在所拥有的:

package main

func main() {
e := echo.New()
e.Use(grpcGatewayMiddleware(mux, func(c echo.Context) bool {
    return strings.HasPrefix(c.Path(), "/skip")
}))
e.Use(logMiddleware)
...
}

func Middleware(config auth.Config) echo.MiddlewareFunc {
    return func(next echo.HandlerFunc) echo.HandlerFunc {
        return func(c echo.Context) (err error) {
            message := Message {
                Method: c.Request().Method,
                Url:    c.Request().RequestURI,
                Prams:  c.Request().Form.Encode(),
            }
            log(message)
        }
    }
}

func grpcGatewayMiddleware(mux *runtime.ServeMux, skipper middleware.Skipper) echo.MiddlewareFunc {
    if skipper == nil {
        skipper = middleware.DefaultSkipper
    }
    return func(next echo.HandlerFunc) echo.HandlerFunc {
        return func(c echo.Context) error {
            if skipper(c) {
                return next(c)
            }
            mux.ServeHTTP(c.Response(), c.Request())
            return next(c)
        }
    }
}
4

0 回答 0