gin框架使用系列之三——获取表单数据

  • 系列目录
    • 《gin框架使用系列之一——快速启动和url分组》
    • 《gin框架使用系列之二——uri占位符和占位符变量的获取》

一、获取get参数

get请求的参数是直接加在url后面的,在gin中获取get请求的参数主要用Query()和DefaultQuery()两个方法,示例代码如下

router.GET("/welcome", func(c *gin.Context) {// 获取get请求的参数,如果没有,可以指定默认值firstName := c.DefaultQuery("firstname", "Guest")// 获取get请求的参数,如果没有,则为空lastName := c.Query("lastname")c.JSON(http.StatusOK, gin.H{"first_name": firstName,"last_name":  lastName,})})

在浏览器中输入全部参数的运行如下:
在这里插入图片描述
如果不输入参数,运行结果如下:
在这里插入图片描述

二、获取post的参数

post表单的获取方式是DefaultPostForm()和PostForm()两个函数,如下所示:

	router.POST("/form_post", func(c *gin.Context) {// 获取post表单请求的参数,如果没有,可以指定默认值message := c.DefaultPostForm("message", "Guest")// 获取post表单请求的参数,如果没有,则为空nick := c.PostForm("nick")c.JSON(http.StatusOK, gin.H{"message": message,"nick":    nick,})})

在请求中输入全部参数的结果
在这里插入图片描述

在浏览器中不输入参数的结果

在这里插入图片描述

三、用struct方式获取form表单绑定参数

上面的示例中,我们都是从gin的入参gin.Context中直接获取的,其实我们可以直接将对应的参数转成一个实例对象,这样更加方面我们的开发,具体做法如下:

  • 首先我们需要创建一个struct,在struct中使用tag来绑定form的表单数据
type FormMessage struct {Message string `form:"message"`Nick    string `form:"nick"`
}
  • 在代码中绑定最终的对象
router.POST("/form_post_struct", func(c *gin.Context) {var message FormMessage// 绑定数据c.Bind(&message)c.JSON(http.StatusOK, gin.H{"message": message.Message,"nick":    message.Nick,})})

输入全部参数的返回结果
在这里插入图片描述
不传参数的结果
在这里插入图片描述

三、输入json数据的参数获取

在我们实际开发中,经常是用json的数据来传递的,但是上面的方式对与json数据是获取不到数据的,如下所示:
在这里插入图片描述
那在gin中如何获取json传入的数据呢?
其实方法很简单,只需要将上面步骤中绑定的表单数据的tag中的form字符串换成json,就可以接受json数据了

type FormMessage struct {Message string `json:"message"`Nick    string `json:"nick"`
}

这时候重启项目,我们输入json数据,就能获取到json传入的值了
在这里插入图片描述


后记
  个人总结,欢迎转载、评论、批评指正

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

「Verilog学习笔记」超前进位加法器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 超前进位加法器的实质是:对于输出的每一位Si 其实都可以用Si Ai ^ Bi ^ Cin来表示 我们需要做的只是判断加法结果的最高位该取几 例如本题中 输入的两个数A和B…

7.6分割回文串(LC131-M)

算法: 有很多分割结果,按照for循环去做肯定做不来 这个时候就要想到回溯!那就要画树! 画树 分割的画树过程其实和组合很像。 例如对于字符串aab: 组合问题:选取一个a之后,在ab中再去选取第…

IDEA 2022.2 安装教程

1.下载2020.3版本IDEA 链接:https://pan.baidu.com/s/1IFK8VRjT7vM2VM75ToveGQ?pwd176m 提取码:176m 2.安装 下载完成后,双击exe安装包,出现IDEA安装欢迎首页: 3.将 ja - netfiltet 文件复制到idea安装目录附件 …

docker学习笔记04-可视化界面Portainer

1.Portainer简介 Portainer 是一款开源的容器管理工具,旨在帮助用户更轻松地管理 Docker 环境。无论您是 Docker 新手还是经验丰富的开发人员,Portainer 都提供了直观的用户界面,使您能够方便地创建、部署和监控容器。 安装 Portainer 非常…

Docker本地部署开源浏览器Firefox并远程访问进行测试

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器,由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

Windows不同的域名由不同的DNS服务器解析

gpedit.msc(组策略)-计算机配置-Windows设置-域名解析策略 本次改动在注册表中体现的位置。 计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Dnscache\Parameters\DnsPolicyConfig\{666881c9-5525-434b-a62a-2ed5c61d53e5} 计算机\HKEY_LOCAL_MACHINE\SYSTEM\Cur…

FileZilla的使用主动模式与被动模式

🎬 艳艳耶✌️:个人主页 🔥 个人专栏 :《产品经理如何画泳道图&流程图》 ⛺️ 越努力 ,越幸运 目录 一、FileZilla简介 1、FileZilla是什么? 2、FileZilla的应用场景 二、FileZilla的安装 1、下…

YoloV8改进策略:基于自研的图注意力机制改进| 独家改进方法|图卷积和注意力融合模块

摘要 SE注意力机制是一种通过显式建模卷积特征的信道之间相互依赖性的方法,旨在提高网络产生的表示的质量。SE注意力机制包括两个步骤:Squeeze和Excitation。在Squeeze步骤中,通过全局平均池化操作将输入特征图压缩成一个向量,然后通过一个全连接层将其映射到一个较小的向…

设计模式(4)--对象行为(8)--状态

1. 意图 允许一个对象在其内部状态改变时改变它的行为。 2. 三种角色 上下文环境(Context)、抽象状态(State)、具体状态(Concrete State) 3. 优点 3.1 将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。 3.2 使得状态转换显式化。 3.3 State对象可被共…

060:vue中markdown编辑器mavon-editor的应用示例

第060个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

别再盲目运营私域电商小程序了!这五大实操策略让你轻松实现盈利!

私域电商的崛起,已经成为了电商行业的新潮流。在这个趋势中,私域电商小程序以其独特的优势,成为了实现从运营到盈利的关键环节。那么,如何利用私域电商小程序快速达到盈利目标呢?接下来,我们将为您揭秘私域…

天津医科大学临床医学院专升本药学专业有机化学考试大纲

天津医科大学临床医学院高职升本科专业课考试大纲药学专业《有机化学》科目考试大纲 一、考试基本要求 本考试大纲主要要求考生对《有机化学》基本概念有较深入的了解,能够系统地掌握各类化合物的命名、结构特点及立体异构、主要性质、反应、来源和合成制备方法等…

3D游戏角色建模纹理贴图处理

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 在本文中,我们将介绍 3D 纹理的基础知识,并讨…

【新版Hi3559AV100 旗舰8K30 AI摄像机芯片】

新版Hi3559AV100 旗舰8K30 AI摄像机芯片 一、总体介绍 Hi3559AV100是专业的8K Ultra-HD Camera SOC,它提供了8K30/4K120广播级图像质量的数字视频录制,支持8路Sensor输入,支持H.265编码输出或影视级的RAW数据输出,并集成高性能ISP…

常用环境部署(十)——MySQL主从同步数据搭建(一主一从)

一、主从服务器MySQL安装 1、注意事项 主从服务器数据库尽量安装同一版本,避免兼容性造成的一些错误产生 2、Centos安装MySQL 链接:centos7离线安装MySQL-CSDN博客 二、主库MySQL配置 1、修改主库配置 (1)编辑数据库配置文…

ClickHouse基础知识(四):ClickHouse 引擎详解

1. 表引擎的使用 表引擎是 ClickHouse 的一大特色。可以说, 表引擎决定了如何存储表的数据。包括: ➢ 数据的存储方式和位置,写到哪里以及从哪里读取数据。 默认存放在/var/lib/clickhouse/data ➢ 支持哪些查询以及如何支持。 ➢ 并发数…

缓冲流得到

原始的字节流转移文件, 缓冲流到字节数组的数据交换,因为是在内存里面运行,所以速度很快 扩大缓冲池内存 字符缓冲流 这个方法readLine用的挺多的

Windows环境检验NodeJs安装是否成功

Windows环境检验NodeJs安装是否成功 检验方法 1、winR 打开运行窗口,在此窗口输入cmd命令 2、进入命令提示符窗口,分别输入以下命令,显示版本号,则安装成功 node -v:显示安装的nodejs版本npm -v:显示安装…

文件销毁 硬盘销毁 数据销毁:护航数据安全的最后一公里

希望与业界各位志同道合的伙伴交流切磋最新的网络、服务器行业动态信息,同时分享腾讯在网络与服务器领域,规划、运营、研发、服务等层面的实战干货,期待与您的共同成长。 网络平台部以构建敏捷、弹性、低成本的业界领先海量互联网云计算服务…

判断字符串回文----每日一题

大家好我是Beilef,今天分享的是字符串回文。魂影大家在评论区留言。O(∩_∩)O 文章目录 目录 文章目录 题目重现: 题⽬描述: 输⼊⼀个字符串,判断这个字符串是否是回⽂字符串(字符串的⻓度⼩于等于30,字符…