鉴于http.ResponseWriter已经完成了一些.Write()操作,可以直接获得当前累积的响应长度吗?
我很确定这可以通过Hijack转换完成,但我想知道它是否可以直接完成.
nem*_*emo 11
即使你知道你得到了什么,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}
}
Run Code Online (Sandbox Code Playgroud)
您甚至可能希望编写自己的版本http.Server,ResponseWriterWithLength默认情况下提供.
| 归档时间: |
|
| 查看次数: |
1675 次 |
| 最近记录: |