【发布时间】:2019-06-28 18:43:38
【问题描述】:
使用 Golang 的 net/http 包,我如何检查 ResponseWriter 是否已写入?我收到以下错误消息:
http:多个响应。WriteHeader 调用
当然,我可以从我的函数中返回布尔值等指示天气,我通过重定向或其他方式写给ResponseWriter我用一种简单的方法给它写信。
我正在寻找一个类似于以下内容的函数,我可以在写信给ResponseWriter 之前使用它:
if w.Header().Get("Status-Code") == "" {
http.Redirect(w, r, "/", http.StatusSeeOther)
} else {
fmt.Println("Response Writer has already been written to.")
}
上面的代码似乎不起作用...有人知道如何检查ResponseWriter 是否已写入?
【问题讨论】:
-
我找到了一个可能的解决方案。每次我使用重定向或文件服务器写入 ResponseWriter 时,我还可以设置一个自定义标头
w.Header().Set("custom", "1")指示它已设置,我可以使用w.Header().Get("custom") == "1"进行检查 -
您可以制作自己的
http.ResponseWriter版本,在调用WriteHeader时将布尔值设置为true。见play.golang.org/p/o6Tp9urYZZ。 -
看看Gin framework。它在 ResponseWriter 上实现了一个
Written()方法
标签: http go httpresponse