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

文章目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/28741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】‘双向链表’冲冲冲

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

Prometheus技术文档-概念

Prometheus是一个开源的项目连接如下: Prometheus首页、文档和下载 - 服务监控系统 - OSCHINA - 中文开源技术交流社区 基本概念: Prometheus是一个开源的系统监控和告警系统,由Google的BorgMon监控系统发展而来。它主要用于监控和度量各种…

《UNIX 传奇:历史与回忆》读后感

《UNIX 传奇:历史与回忆》 是 bwk(Brian W. Kernighan)2019 年的新作,回忆了 UNIX 在大半个世纪的风雨历程,是一本引人入胜的书籍。通过对 UNIX 操作系统的历史和发展进行详细的叙述和回顾,让我对这个操作系…

微信-公众号服务器配置,小程序token认证

参考微信文档 这部分代码试用于微信公众号的服务器token校验,且适用于小程序的token校验 接入概述 | 微信开放文档 @RequestMapping(value = "/message/verify")public @ResponseBody String verify(HttpServletRequest request, HttpServletResponse respons…

redis String类型命令

Redis的String类型是一种简单的键值对数据结构,常用的String类型命令有: SET key value:设置指定key的值为value。GET key:获取指定key的值。DEL key:删除指定key及其对应的值。INCR key:将指定key的值加1…

【eNSP】静态路由

【eNSP】静态路由 原理网关路由表 实验根据图片连接模块配置路由器设备R1R2R3R4 配置PC的IP地址、掩码、网关PC1PC2PC3 配置静态路由查看路由表R1R2R3R4测试能否通信 原理 网关 网关与路由器地址相同,一般路由地址为.1或.254。 网关是当电脑发送的数据的目标IP不在…

CSS基础介绍笔记1

官方文档 CSS指的是层叠样式(Cascading Style Sheets)地址:CSS 教程离线文档:放大放小:ctrl鼠标滚动为什么需要css:简化修改HTML元素的样式;将html页面的内容与样式分离提高web开发的工作效率&…

ROS实现自定义信息以及使用

常见的消息包 消息包定义一般如下👇 (1)创建包和依赖项 (2)在新建的qq_msgs的包新建msgs的文件夹,在该文件夹里面新建Carry.msg类型的文件。 其实,Carry.msg就是你自己定义的消息类型&am…

C++入门(小白篇1—编译器安装-代码注释等)

前言: 最近想学一下一下C看了一些博客内容写的倒是很充实,但是,细节不到位,我是有Python基础的,所以学习来蛮快的,但是对于小白的话,有好多小细节大多数博客还是不够详细,由此我想写…

【机器学习】在 MLOps构建项目 ( MLOps2)

My MLOps tutorials: Tutorial 1: A Beginner-Friendly Introduction to MLOps教程 2:使用 MLOps 构建机器学习项目 一、说明 如果你希望将机器学习项目提升到一个新的水平,MLOps 是该过程的重要组成部分。在本文中,我们将以经典手写数字分类…

新型高速 JavaScript 运行时 Bun 0.7 发布

导读近日,新型 JavaScript 运行时 Bun 正式发布了 0.7 版本,带来了重大的升级。据悉,Bun 是一个配套齐全的 JavaScript 解决方案,集运行时、打包器、转译器和包管理器于一体,追求极致的运行速度。此次更新主要集中在与…

5G RedCap

5G RedCap指的是3GPP所提出的5G标准。与之前发布的5G标准相比,功能更加精简。5G RedCap于2019年6月首次被纳入3GPP R17研究项目。 把一些不必要的功能去掉就可以带来模组价格的降低。背后的基本想法是:为物联网应用定义一种新的、不那么复杂的NR设备。 …

Android Framework解析——WMS原理

作者:bobby_developer 1. WMS原理:WMS角色与实例化过程 window:它是一个抽象类,具体实现类为 PhoneWindow ,它对 View 进行管理。Window是View的容器,View是Window的具体表现内容; windowManager:是一个接…

智慧图书馆:数字发展时代的文化粮仓

以下内容来自于易知微官网,进入官网可以了解更多详情。 注意:案例数据均为虚拟数据 书籍犹如灯塔指引着人们前进的方向,同时图书馆也是一个城市的灵魂。图书馆在为我们提供学习场所的同时,也在城市文明建设过程中起着不可替代的…

Linux下查询文件夹中文件数量的方法

一、前言 在Linux系统中,我们经常需要查询文件夹中包含多少文件。本文将介绍三种在Linux中查询文件夹中文件数量的方法,帮助你轻松获取所需信息。 二、方法 1、使用ls命令和wc命令 使用ls命令的-l选项和管道操作符|结合wc命令来统计文件数量&#xf…

事件循环原理

事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? 有…

Kubernetes 初接触

Kubernetes 初接触 一、Kubernetes 概述1.1 K8S 是什么?1.2 为什么要用 K8S?1.3 Kubernetes 主要功能 二、Kubernetes 集群架构与组件2.1 核心组件2.1.1 Master 组件2.1.1.1 这些控制器主要包括 2.1.2 配置存储中心2.1.3 Node 组件 2.2 Kubernetes 核心概念2.2.1 P…

Oracle Cloud 开启 root 权限登录甲骨文VPS

利用脚本来开启root账号密码登录 echo root:S123456 |sudo chpasswd root sudo sed -i s/^#\?PermitRootLogin.*/PermitRootLogin yes/g /etc/ssh/sshd_config; sudo sed -i s/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g /etc/ssh/sshd_config; sudo servi…

企业邮箱安全对比:哪家公司的产品更可靠?

邮箱仍然是企业沟通的关键组成部分,但往往容易受到安全威胁。为了保护敏感信息,企业需要采取措施使企业邮箱更加安全。这可以通过投资先进的安全解决方案,创建限制或控制访问的策略,并定期对员工进行最佳实践培训来实现。 1、投资…

SpringBoot+JWT

一、maven坐标 <!-- JWT依赖 --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency><dependency><groupId>com.auth0</groupId>&…