Files
ginx/middleware/filter.go
T
2024-06-25 18:34:00 +08:00

39 lines
703 B
Go

package middleware
import (
"bytes"
"fmt"
"github.com/gin-gonic/gin"
)
// 原理是创建的时候注入了一个方法处理响应的信息
func ResponseFilterMiddleware(c *gin.Context) {
fmt.Println(c.Writer)
blw := &bodyLogWriter{
body: bytes.NewBufferString(""),
ResponseWriter: c.Writer,
}
c.Writer = blw
c.Next()
statusCode := c.Writer.Status()
fmt.Println(statusCode)
fmt.Println("拦截输出")
}
type bodyLogWriter struct {
gin.ResponseWriter
body *bytes.Buffer
}
// 真正输出的时候,它会调用这个输出方法
func (w bodyLogWriter) Write(b []byte) (int, error) {
// b = []byte(`{"code":0}`)
w.body.Write(b)
return w.ResponseWriter.Write(b)
}