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

相关推荐
robin59112 小时前
容器-PUSH镜像卡住问题排查
容器·golang·kubernetes
风生u3 小时前
Go中的反射
golang·反射
T.O.P_KING3 小时前
Common Go Mistakes(IV 字符串)
开发语言·后端·golang
Hello.Reader5 小时前
用纯 Go 实现一个 AES-128 加密 m3u8 视频下载器(不依赖 ffmpeg)
golang·ffmpeg·音视频·m3u8
Zfox_6 小时前
【Go】异常处理、泛型和文件操作
开发语言·后端·golang
zhangyanfei016 小时前
谈谈 Golang 中的线程协程是如何管理栈内存的
开发语言·后端·golang
q***04636 小时前
[golang][MAC]Go环境搭建+VsCode配置
vscode·macos·golang
小信啊啊10 小时前
Go语言结构体
golang·go
古城小栈11 小时前
Go中 巧妙解决 同主版本多子版本共存
后端·golang
芷栀夏11 小时前
多设备文件接力太麻烦?Go File + cpolar让传输效率翻倍
开发语言·后端·golang