【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 到上下文中,重复绑定不会有问题

相关推荐
简单点了8 小时前
go前后端项目的启动 、打包和部署
开发语言·后端·golang
九江Mgx10 小时前
用 Go 手搓一个 NTP 服务:从“时间混乱“到“精准同步“的奇幻之旅
golang·ntp
脚踏实地的大梦想家18 小时前
【Go】P11 掌握 Go 语言函数(二):进阶玩转高阶函数、闭包与 Defer/Panic/Recover
开发语言·后端·golang
CoLiuRs19 小时前
在 go-zero 中优雅使用 Google Wire 实现依赖注入
后端·微服务·golang
千码君201620 小时前
Go语言:对其语法的一些见解
开发语言·后端·golang
新青年57921 小时前
Go语言项目打包上线流程
开发语言·后端·golang
Lovely Ruby1 天前
七日 Go 的自学笔记 (一)
开发语言·笔记·golang
小羊在睡觉1 天前
golang定时器
开发语言·后端·golang
不爱洗脚的小滕1 天前
【Redis】三种缓存问题(穿透、击穿、双删)的 Golang 实践
redis·缓存·golang
九江Mgx2 天前
使用 Go + govcl 实现 Windows 资源管理器快捷方式管理器
windows·golang·govcl