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

相关推荐
大侠归来18 小时前
C 与 Go 语言对比:从设计哲学到工程实践
java·c语言·golang
小小龙学IT20 小时前
Go 语言内存管理与垃圾回收(GC)深度解析:从逃逸分析到性能调优适
golang·go1.19
HEJOO921 小时前
Go 语言结构体定义与实例详解
开发语言·算法·golang
墨鱼老师1 天前
Go+Gin+Vue 毕设项目:Gin 框架搭建后端基础接口实战
vue.js·golang·go·gin·前后端分离·计算机毕业设计·go 后端
JWASX1 天前
Java 转 go 学习 - 类型转换
学习·golang
小小龙学IT2 天前
Go 语言 encoding/json 标准库深度解析:从 Tag 反射到流式处理
golang·json
JWASX2 天前
Java 转 go 学习 - 函数(1)
学习·golang
看浪的路人2 天前
第7讲:实时告警与自动化响应
开发语言·后端·golang
小小龙学IT2 天前
Go 语言 database/sql 标准库深度解析:从连接池到驱动抽象
数据库·sql·golang
wdfk_prog2 天前
Wi-Fi Direct 源码分析(09):从 P2P_CONNECT 到 GO Negotiation 完成
运维·服务器·ubuntu·golang·asp.net·p2p·wifi-direct