package middleware import ( "bytes" "io" "github.com/gin-gonic/gin" ) // CacheBody 缓存 request body(body 只能读一次,中间件提前读取并缓存) func CacheBody() gin.HandlerFunc { return func(c *gin.Context) { body, err := io.ReadAll(c.Request.Body) if err != nil { body = []byte{} } c.Request.Body = io.NopCloser(bytes.NewBuffer(body)) c.Set("raw_body", body) c.Next() } }