正常读取字节流(直接读空)
func ReadData(c *gin.Context) {
// 这样读取字节流之后,整个c.request.body就已经读空啦。再次无法读到数据。
data, err := ioutil.ReadAll(c.Request.Body)
if err != nil {
log.Fatalln(err)
}
fmt.Println(string(data))
// 再次读取
data, _ = ioutil.ReadAll(c.Request.Body)
fmt.Println(string(data)) // 无数据
}
复制字节流
func ReadData(c *gin.Context) {
// 这样读取字节流之后,整个c.request.body就已经读空啦。再次无法读到数据。
data, err := ioutil.ReadAll(c.Request.Body)
if err != nil {
log.Fatalln(err)
}
fmt.Println(string(data))
// 再次读取数据(复制字节流)
c.Request.Body = ioutil.NopCloser(bytes.NewReader(data))
data, _ = ioutil.ReadAll(c.Request.Body)
fmt.Println(string(data)) // 有数据
}