请问在gin中为什么要自己建立一个结构体来获取response

请问在本节课中,为什么要自己建立一个responseBodyWriter结构体来获取response?

type responseBodyWriter struct {
    gin.ResponseWriter
    body *bytes.Buffer
}

func (r responseBodyWriter) Write(b []byte) (int, error) {
    r.body.Write(b)
    return r.ResponseWriter.Write(b)
}

// Logger 记录请求日志
func Logger() gin.HandlerFunc {
    return func(c *gin.Context) {

        // 获取 response 内容
        w := &responseBodyWriter{body: &bytes.Buffer{}, ResponseWriter: c.Writer}
        c.Writer = w

        //.....
    }
}
讨论数量: 3
sreio
//里面的body就是为了保存响应结果
type responseBodyWriter struct {
    gin.ResponseWriter
    body *bytes.Buffer
}


/**
 * c *gin.Context 这个里面也有保存响应结果,但是我看好像没有对外部访问的响应结果变量或方法,上面新建一个body,以及重写write方法只是为了方便我们拿到响应结果
*/
return func(c *gin.Context) {
        // 获取 response 内容
        w := &responseBodyWriter{body: &bytes.Buffer{}, ResponseWriter: c.Writer}
        c.Writer = w

        //.....
2年前 评论
Bunny3936 (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!