GIN复制字节流

正常读取字节流(直接读空)

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)) // 有数据
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。