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

相关推荐
刀法如飞2 天前
一款Go语言Gin框架MVC脚手架,满足大部分场景
go·mvc·gin
花酒锄作田3 天前
Gin 框架中的规范响应格式设计与实现
golang·gin
qwfys2004 天前
How to install golang 1.26.0 to Ubuntu 24.04
ubuntu·golang·install
codeejun4 天前
每日一Go-25、Go语言进阶:深入并发模式1
开发语言·后端·golang
石牌桥网管4 天前
Go 泛型(Generics)
服务器·开发语言·golang
小二·4 天前
Go 语言系统编程与云原生开发实战(第21篇)
开发语言·云原生·golang
小二·4 天前
Go 语言系统编程与云原生开发实战(第20篇)
开发语言·云原生·golang
女王大人万岁4 天前
Golang实战Eclipse Paho MQTT库:MQTT通信全解析
服务器·开发语言·后端·golang
codeejun4 天前
每日一Go-24、Go语言实战-综合项目:规划与搭建
开发语言·后端·golang
石牌桥网管4 天前
Go类型断言
开发语言·后端·golang