http.ResponseWriter
いくつかのs が実行された a が与えられた場合.Write()
、応答の現在の累積長を直接取得できますか?
これは変換で実行できると確信してHijack
いますが、直接実行できるかどうか知りたいです。
http.ResponseWriter
いくつかのs が実行された a が与えられた場合.Write()
、応答の現在の累積長を直接取得できますか?
これは変換で実行できると確信してHijack
いますが、直接実行できるかどうか知りたいです。
インターフェースの根底にあるものを知っていたとしても、http.ResponseWriter
何か使えるものがある可能性は低いです。http パッケージの標準を使用して取得した構造体をよく見るとServeHTTP
、バッファーの長さを取得する方法がないことがわかりますが、それをハイジャックします。
代わりにできることは、ライターをシャドウすることです。
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
ます。