Response Writer
WrapResponseWriter is for middleware authors.
Use it when middleware needs to inspect the response after the next handler runs.
func measure() zinc.Middleware { return func(c *zinc.Context) error { base := c.Writer() rw := zinc.WrapResponseWriter(base) c.SetWriter(rw) defer c.SetWriter(base)
err := c.Next()
status := rw.Status() bytes := rw.BytesWritten() written := rw.Written()
_ = status _ = bytes _ = written return err }}Interface
Section titled “Interface”type ResponseWriter interface { http.ResponseWriter Status() int BytesWritten() int Written() bool}Status() returns 200 OK until another status is written. Written() tells you whether headers or body bytes have been sent.
Optional behavior
Section titled “Optional behavior”The wrapper preserves common optional writer behavior when the underlying writer supports it:
http.Flusherhttp.Hijackerio.ReaderFromhttp.PusherUnwrap() http.ResponseWriter
Use a narrow assertion when integration code needs the original writer.
if unwrapper, ok := rw.(interface{ Unwrap() http.ResponseWriter }); ok { base := unwrapper.Unwrap() _ = base}