golang复用http.request.body
[Go - Note] http.Response.Body 多次读取处理
Gin框架,body参数只能读取一次
[go] Gin中间件中获取request.body
Gin框架参数多次绑定
具体原因无非是读取body是类似读缓存区的数据,读完之后数据就是空的,最简单的做法就是读完之后把数据放回去
buf := &bytes.Buffer{}
oldBody := io.TeeReader(ctx.Request.Body, buf)
body, err := ioutil.ReadAll(oldBody)
ctx.Request.Body = ioutil.NopCloser(bytes.NewBuffer(buf))
body, err := ioutil.ReadAll(ctx.Request.Body)
ctx.Request.Body = ioutil.NopCloser(bytes.NewBuffer(body))
ctx.Request.Body.Close() // 用完记得关掉io流 可以用defer