相关疑难解决方法(0)

Golang读取请求正文

我正在编写自己的logginMiddleware.基本上,我需要记录请求的主体和响应.我遇到的问题是,当我读到身体时,它会变空,我无法读取它两次.我知道它发生是因为它是ReadCloser类型.有没有办法将身体倒回到开头?

http go server

46
推荐指数
1
解决办法
7万
查看次数

记录 http.ResponseWriter 内容

前提:我发现了类似的问题,但不适用于我的情况,所以请不要将其标记为重复。

我在 Go 中有一个 HTTP 服务器,我创建了一个中间件来记录请求、响应时间,我也想记录响应。

我已经在包下httputil.DumpRequest调用的函数中使用了。如何正确获取响应正文、状态和标头并将它们与其他数据一起记录?HTTPRequestlogw http.ResponseWriter

我的问题是:我想拦截响应标头、状态和正文,并将其与请求和响应时间一起记录

这是代码:

log "core/logger"
...
func RequestLoggerMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        start := time.Now()

        defer func() {
            log.Info(
                fmt.Sprintf(
                    "[Request: %s] [Execution time: %v] [Response: %s]",
                    log.HTTPRequest(r),
                    time.Since(start),
                    // RESPONSE DATA HERE !!!!!!!
                ))
        }()
        next.ServeHTTP(w, r)
    })
}
Run Code Online (Sandbox Code Playgroud)

logging middleware go

6
推荐指数
1
解决办法
3667
查看次数

标签 统计

go ×2

http ×1

logging ×1

middleware ×1

server ×1