6
.Write()
が実行されたhttp.ResponseWriter
がある場合、現在の応答の累積長を直接取得できますか?http.ResponseWriterから現在のレスポンス長を取得する方法
これはHijack
の変換で行うことができますが、私はそれを直接行うことができるかどうかを知りたいと思います。
.Write()
が実行されたhttp.ResponseWriter
がある場合、現在の応答の累積長を直接取得できますか?http.ResponseWriterから現在のレスポンス長を取得する方法
これはHijack
の変換で行うことができますが、私はそれを直接行うことができるかどうかを知りたいと思います。
http.ResponseWriter
インターフェイスの基礎となるものが分かっていても、使用可能なものが少ない可能性があります。構造体にlook closerのhttpパッケージの標準ServeHTTP
を使用すると、バッファの長さに到達する方法はないが、ハイジャックすることがわかります。あなたも、デフォルトでResponseWriterWithLength
を提供していますhttp.Server
の独自のバージョンを、書きたいかもしれません
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}
}
:あなたが代わりに何ができるか
は、ライターをシャドウイングされます。
これは私が推測していたものです。確認していただきありがとうございます。 –
このアプローチの唯一の問題は、ヘッダーの長さを考慮しないことです。 – dolzenko