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}]}文章来源:https://www.toymoban.com/news/detail-632208.html
2 解决:替换为ShouldBindBodyWith
// 原本
c.ShouldBindJSON
c.ShouldBind
// 替换为
c.ShouldBindBodyWith(&req,binding.JSON)
此时body 会cache 到上下文中,重复绑定不会有问题文章来源地址https://www.toymoban.com/news/detail-632208.html
到了这里,关于【go】GIN参数重复绑定报错EOF问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!