【发布时间】:2015-03-28 16:45:03
【问题描述】:
这是In go, how to inspect the http response that is written to http.ResponseWriter? 的后续问题,因为那里的解决方案需要伪造请求,这对于单元测试非常有效,但不适用于实时服务器。
我想将我的 Web 服务为响应它从用户接收到的请求而返回的 HTTP 响应转储到日志文件(或控制台)中。输出应该告诉我标头是什么以及 JSON 有效负载。
如何做到这一点?
如果有一个以 http.ResponseWriter 而不是 http.Response 作为参数的 httputil.DumpResponse 等价物,那将是完美的,但目前我只能从 http.ResponseWriter 访问 Header
r = mux.NewRouter()
r.HandleFunc("/path", func (w http.ResponseWriter, r *http.Request) {
fmt.Printf("r.HandleFunc /path\n")
resp := server.NewResponse()
defer resp.Close()
r.ParseForm()
// Server does some work here
// ...
// Insert debug code here, something like
//
// dump = http.DumpResponseFromWriter(w)
// fmt.Printf("%s\n", dump)
});
http.Handle("/path", r)
【问题讨论】:
-
如果您可以将
net.Conn包装在发送到网络但也写入日志文件或缓冲区的内容中,那就太好了。但是我看不到您可以在net/http管道中插入它。如果本周末没有人提出任何建议,这可能是 golang-nuts 的问题。