【go】GIN参数重复绑定报错EOF问题

这篇具有很好参考价值的文章主要介绍了【go】GIN参数重复绑定报错EOF问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 到上下文中,重复绑定不会有问题文章来源地址https://www.toymoban.com/news/detail-632208.html

到了这里,关于【go】GIN参数重复绑定报错EOF问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go在安装Gin时出现Failed to connect 报错问题的解决方案(已解决)

              在命令行中输入:go get -u github.com/gin-gonic/gin指令安装Gin第三方包时出现连接错误与连接超时的情况如下:           在较新版本的Go中引入了全新的包管理机制,出现上述错误可能是包管理机制设置不恰当的问题,尝试在终端窗口输入如下命令以更新包的管理机

    2024年02月10日
    浏览(27)
  • Go的gin参数校验之validator库

    使用 validator 以后,只需要在定义结构体时使用 binding 或 validate tag标识相关校验规则,就可以进行参数校验了,而不用自己单独去写常见的校验规则。 常用约束如下: 字符串约束 excludesall:不包含参数中任意的 UNICODE 字符,例如excludesall=ab; excludesrune:不包含参数表示的

    2024年02月12日
    浏览(26)
  • 解决GO安装gin框架(go get -u github.com/gin-gonic/gin)超时问题

    🍊gin框架github地址:https://github.com/gin-gonic/gin         按照官方文档安装gin,但是尝试了好几次,包括使用国内网络或者使用梯子,都超时失败了,爆了如下超时错误 🍊 解决方法如下 1、先查看go相关的配置 如上显示GOPROXY配置是https://proxy.golang.org,这个地址已经被墙了,

    2024年02月11日
    浏览(44)
  • gin自定义中间件解决requestBody不可重复读问题

    先直接上代码 注意,上面的中间件,需要在第一个执行。 在gin中,context.Request.Body 是一个io.ReadCloser的接口,如下图 查看io.ReadCloser接口定义 我们发现io.ReaderCloser接口的本质就是 Read(p []byte) (n int, err error) 和 Close() error 的组合。 所以我们只需要自己编写实现 Read(p []byte) (n in

    2024年02月01日
    浏览(69)
  • gin中关于参数注入问题

    如果在开发中一旦发小参数没有按照既定的要求注入到结构体的话,这个时候就一定要看请求方式什么?如果是post请求、 前端—post—json{id:1,pageSize:10,page:1}———————————- 参数注入方法:ShouldBindJSON post + json 传递过来json参数,post请求的 {page:1,pageSize:10,keyword:“”

    2024年02月12日
    浏览(25)
  • Gin框架: 使用go-ini配置参数与不同环境下的配置部署

    关于 INI 配置文件与go-ini 1 )概述 在INI配置文件中可以处理各种数据的配置 INI文件是一种简单的文本格式,常用于配置软件的各种参数 go-ini 是地表 最强大、最方便 和 最流行 的 Go 语言 INI 文件操作库 Github 地址:https://github.com/go-ini/ini 官方文档: https://ini.unknwon.io/ 使用示例

    2024年02月22日
    浏览(30)
  • Gin 应用多实例部署session问题、session参数与刷新

    目录 一、Gin Session 存储的实现方案 二、 memstore :基于内存的实现 2.1 基本使用 2.2 关键参数 三、使用 redis :多实例部署 3.1 使用redis优势 3.2 基本使用 四、信息安全的三个核心概念 五、Gin Session 参数 5.1 参数介绍 六、Session 自动刷新 cookie :基于 cookie 的实现,不安全,一般

    2024年02月19日
    浏览(22)
  • gin数据解析和绑定

    客户端传参,后端接收并解析到结构体 参考文章: https://www.fansimao.com/928784.html https://www.fansimao.com/928797.html https://www.fansimao.com/928805.html

    2024年01月21日
    浏览(19)
  • golang微框架Gin

    Gin是一个golang的微框架,基于httprouter,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点 Gin特征 速度快:基于基数树的路由,内存占用小,没有反射,可预测的APi性能 中间件支持 传入的http请求可以有中间件链和最终操作处理,例如:Logger,Aut

    2024年02月09日
    浏览(29)
  • [golang gin框架] 39.Gin商城项目-微服务实战之微服务架构

    单体架构在 中小企业内部 用的是非常多的,当 业务不复杂 , 团队规模不大 的时候,单体架构比微服务架构具有 更高的生产率 单体架构 当 业务比较复杂 , 并发量 比较大, 团队规模扩大的时候, 就需要引入微服务架构了,它比单体架构 具有 更高的生产率, 可以 节省成本 , 解

    2024年02月12日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包