如何从http.ResponseWriter获取当前响应长度

给定一个http.ResponseWriter已经执行了若干次的.Write(),可以直接获得当前累积的响应长度吗?

我很确定这可以通过Hijack转换来完成,但是我想知道是否可以直接完成。


素胚勾勒不出你
浏览 309回答 1
1回答

莫回无

即使您知道所得到的东西,但在该http.ResponseWriter接口的基础上,存在有用的几率也很低。如果您仔细查看使用ServeHTTPhttp软件包标准获得的结构,您会发现无法劫持缓冲区的长度。或者,您可以做的是遮蔽作者:type ResponseWriterWithLength struct {    http.ResponseWriter    length int}func (w *ResponseWriterWithLength) Write(b []byte) (n int, err error) {    n, err = w.ResponseWriter.Write(b)    w.length += n    return}func (w *ResponseWriterWithLength) Length() int {    return w.length}func MyServant(w http.ResponseWriter, r *http.Request) {    lengthWriter := &ResponseWriterWithLength{w, 0}}您甚至可能想要编写自己的版本http.Server,ResponseWriterWithLength默认情况下提供。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go