【go】GIN参数重复绑定报错EOF问题

文章目录

  • [1 问题描述](#1 问题描述)
  • [2 解决:替换为ShouldBindBodyWith](#2 解决:替换为ShouldBindBodyWith)

1 问题描述

在 Gin 框架中,当多次调用 ShouldBind() 或 ShouldBindJSON() 方法时,会导致请求体的数据流被读取多次,从而出现 "EOF" 错误。

例如在api层绑定了参数,又自定义了读取参数或绑定参数的中间件,会造成重复调用。

ERROR\] 2023/08/07 14:36:48 {"user_id":"975674f531784289bfba3ee011ec0af0","trace_id":"ae6331c69b5d474a8980c6f6ef8b86e2","error":"EOF","position":\[{"FileName":"D:/nscp_code/nscp/api/v1/organization.go","FuncName":"nscp/api/v1.(\*origanizationApi).FindByCompanyIds","Line":63}\]}

2 解决:替换为ShouldBindBodyWith

复制代码
// 原本
c.ShouldBindJSON
c.ShouldBind

 // 替换为
c.ShouldBindBodyWith(&req,binding.JSON) 

此时body 会cache 到上下文中,重复绑定不会有问题

相关推荐
GDAL4 小时前
gin.H 深入全面讲解
gin·h
zs宝来了4 小时前
etcd Raft 实现:分布式一致性核心原理
golang·go·后端技术
呆萌很4 小时前
【GO】为任意类型添加方法练习题
golang
geovindu6 小时前
go: Simple Factory Pattern
开发语言·后端·设计模式·golang·简单工厂模式
亿牛云爬虫专家6 小时前
生产级Go高并发爬虫实战:突破 net_http 长连接与隧道代理IP切换陷阱
爬虫·http·golang·代理ip·keepalive·隧道代理·https connect
阿里加多7 小时前
第 5 章:Go 内存模型与 Happens-Before 原则
开发语言·后端·golang
止语Lab8 小时前
从一行超时配置到分布式可观测性——Go HTTP服务的渐进式演进实战
分布式·http·golang
呆萌很9 小时前
【Gin】参数处理练习题
gin
GDAL9 小时前
gin.Default() 深入全面讲解
golang·go·gin
hrhcode9 小时前
【java工程师快速上手go】三.Go Web开发(Gin框架)
java·spring boot·golang