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

相关推荐
pipip.8 分钟前
Go原生高性能内存网关IMS,比Redis更快
开发语言·redis·golang
q***06292 小时前
环境安装与配置:全面了解 Go 语言的安装与设置
开发语言·后端·golang
月屯6 小时前
平台消息推送(go)
数据库·后端·golang·cocoa·iphone·gin
百锦再12 小时前
第11章 泛型、trait与生命周期
android·网络·人工智能·python·golang·rust·go
hweiyu0012 小时前
Go Fiber 简介
开发语言·后端·golang
周杰伦_Jay15 小时前
【智能体(Agent)技术深度解析】从架构到实现细节,核心是实现“感知环境→处理信息→决策行动→影响环境”的闭环
人工智能·机器学习·微服务·架构·golang·数据挖掘
天使街23号18 小时前
go-dongle v1.2.0 发布,新增 SM2 非对称椭圆曲线加密算法支持
开发语言·后端·golang
雨中散步撒哈拉20 小时前
16、做中学 | 初三上期 Golang面向对象_进阶
爬虫·python·golang
Java小混子1 天前
golang项目CRUD示例
开发语言·后端·golang
想搞艺术的程序员1 天前
Go 优雅关闭实践指南:从原理到框架落地
开发语言·后端·golang