2012-12-20 15 views

答えて

10

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} 
} 

:あなたが代わりに何ができるか

は、ライターをシャドウイングされます。

+0

これは私が推測していたものです。確認していただきありがとうございます。 –

+0

このアプローチの唯一の問題は、ヘッダーの長さを考慮しないことです。 – dolzenko

関連する問題