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://www.hqwc.cn/news/307140.html

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

相关文章

**Python**综合案例

Python综合案例 一、系统需求分析 1、需求分析 使用面向对象编程思想完成学员管理系统的开发,具体如下: ① 系统要求:学员数据存储在文件中 ② 系统功能:添加学员、删除学员、修改学员信息、查询学员信息、显示所有学员信息、保存学员信息及退出系统等功能。 2、角色…

ArcGIS高程点生成等高线

基本步骤:数据清洗→创建TIN→TIN转栅格→等值线→平滑线。 1.(重要)数据清理:删除高程点中的高程异常值数据。 2.创建TIN:系统工具→3D Analyst Tools→数据管理→TIN→创建TIN(可直接搜索工具TIN)。 单击…

【Linux】基本指令二

这篇博客是对于上篇博客的指令的延续 上篇博客我们说了删除目录或普通文件的命令rm,下面是一些对这个指令的补充,我们知道当root用户删除文件时,系统会问是否要删除,而对于普通用户则不会 那我们如果就想让系统问一下呢&#x…

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第五节 引用类型复制问题及用克隆接口ICloneable修复

深入浅出图解C#堆与栈 C# Heaping VS Stacking 第五节 引用类型复制问题及用克隆接口ICloneable修复 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节…

Oracle数据库查询表空间使用情况

SELECTa.a1 表空间名称,c.c2 类型,c.c3 区管理,b.b2 / 1024 / 1024 表空间大小M,(b.b2-a.a2)/ 1024 / 1024 已使用M,substr((b.b2-a.a2)/ b.b2*100, 1, 5) 利用率 FROM(SELECTtablespace_name a1,sum(nvl(bytes, 0)) a2FROMdba_free_spaceGROUP BYtablespace_name) a,(SELECTta…

GBASE南大通用数据库提供的高可用负载均衡功能

GBASE南大通用GBase 8a ODBC 提供的高可用负载均衡功能是指,GBase 8a ODBC 会将客户 端请求的数据库集群连接平均分摊到集群所有可用的节点上。 GBASE南大通用数据库负载均衡的使用方法 GBASE南大通用GBase 8a ODBC 提供两种方式来使用高可用负载均衡。一种是配置数…

模拟电路基础知识笔记,你想知道的都有,建议收藏!

大家总说模电知识总是学不会,IC修真院为大家整理了模拟电子基础知识,看看你掌握了多少,文末可以获取全部哦。 文末可领全部文档 1、PN结是晶体二极管的基本结构,也是一般半导体器件的核心。 2、 射极输出器没有电压放大能力&am…

【Leetcode 39】组合总和 —— 回溯法

39. 组合总和 给你一个无重复元素的整数数组candidates和一个目标整数target ,找出candidates中可以使数字和为目标数target的 所有不同组合,并以列表形式返回。你可以按**任意顺序 **返回这些组合。 candidates中的同一个数字可以 无限制重复被选取 。…

Ubuntu安装K8S(1.28版本,基于containrd)

原文网址:Ubuntu安装K8S(1.28版本,基于containrd)-CSDN博客 简介 本文介绍Ubuntu安装K8S的方法。 官网文档:这里 1.安装K8S 1.让apt支持SSL传输 sudo apt-get update sudo apt-get -y install apt-transport-https ca-certi…

Django 文件上传(十二)

当 Django 处理文件上传时,文件数据最终会被放置在 request.FILES 。 查看文档:文件上传 | Django 文档 | Django Django工程如下: 创建本地存储目录 在static/应用目录下创建uploads目录用于存储接收上传的文件 在settings.py 配置静态目…

Shell 入门

视频 Shell概述 本次课程主要包含内容: Shell脚本入门Shell变量Shell内置命令Shell运算符与执行运算命令流程控制语句Shell函数Shell重定向Shell好用的工具, cut sed awk sort大厂常见企业面试题 Shell脚本入门 疑问 linux系统是如何操作计算机硬件CPU,内存,磁盘,显示器等…

项目零散记录

Ts托管 仅本项目禁用本地vscode内置的ts服务 提交代码前的检查 husky(哈士奇)工具(是一个git hooks工具) 1、安装 pnpm dlx husky-init && pnpm install安装的时候,出现如下报错 解决方案,需要先执行git init初始化…