package main

import (
"fmt"
"github.com/gin-gonic/gin"
) // gin框架提供给开发者表单实体绑定的功能,可以将表单数据与结构体绑定
type userRegister struct {
UserName string `form:"username" binding:"required"`
Password string `form:"password" binding:"required"`
Phone int `form:"phone" binding:"required"`
} func Register(ctx *gin.Context) {
var userForm = userRegister{} // 127.0.0.1:8000/register?username=马亚南&password=123465&phone=15188945949
/* ShouldBindQuery无论啥请求,都只会绑定查询字符串中的参数
if err := ctx.ShouldBindQuery(&userForm); err != nil {
log.Fatalln("ShouldBindQuery failed")
}
*/
/*
ShouldBind如果是GET请求会绑定查询字符串中的参数,
如果是POST请求,优先绑定form表单或Json字符串中的数据,如果没有也可以绑定查询字符串中的数据
err := ctx.ShouldBind(&userForm)
*/
// ShouldBindJson只能接收json格式的数据,查询字符串参数或form表单数据都不能接收
// Bind开头和ShouldBind开头的区别?
// Bind会在header头中添加400的返回信息,而ShouldBind不会
err := ctx.BindJSON(&userForm)
if err != nil {
fmt.Println(err.Error())
} fmt.Println(userForm) ctx.Writer.Write([]byte(fmt.Sprintf(
"%s:%s:%d", userForm.UserName, userForm.Password, userForm.Phone,
)))
} func main() {
router := gin.Default() router.POST("/register", Register) router.Run(":8000")
}

   Bindxxx和ShouldBindxxx的区别?

   Bind会在header头中添加400的返回信息,而ShouldBind不会

gin框架中请求参数的绑定与多数据格式处理的更多相关文章

  1. gin框架中请求路由组的使用

    1. gin框架中可以使用路由组来实现对路由的分类 package main import "github.com/gin-gonic/gin" func main() { rou ...

  2. gin框架中的参数验证

    结构体验证 用gin框架的数据验证,可以不用解析数据,减少if else,会简洁许多. 处理请求方法 func structValidator(context *gin.Context) { var ...

  3. gin框架中的路由

    基本路由 gin框架中采用的路由库是基于httrouter做的 地址为:https://github.com/julienschmidt/httprouter httprouter路由库 点击查看代码 ...

  4. 在gin框架中使用JWT

    在gin框架中使用JWT JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下. 什么 ...

  5. springmvc请求参数的绑定和获取

    请求参数的绑定和获取: 获取页面请求的参数,是javaweb必不可少的一个环节,在struts中,是通过再Action中定义属性,或者Model的方式进行数据绑定和获取.需要提供setter或gett ...

  6. 16 SpringMVC 的请求参数的绑定与常用注解

    1.SpringMVC 绑定请求参数 (1)支持的数据类型 基本类型参数: 包括基本类型和 String 类型POJO 类型参数: 包括实体类,以及关联的实体类数组和集合类型参数: 包括 List 结 ...

  7. golang gin框架中实现一个简单的不是特别精确的秒级限流器

    起因 看了两篇关于golang中限流器的帖子: Gin 开发实践:如何实现限流中间件 常用限流策略--漏桶与令牌桶介绍 我照着用,居然没效果-- 时间有限没有深究.这实在是一个很简单的功能,我的需求是 ...

  8. go的gin框架从请求中获取参数的方法

    前言: go语言的gin框架go里面比较好的一个web框架, github的start数超过了18000.可见此框架的可信度 如何获取请求中的参数 假如有这么一个请求: POST   /post/te ...

  9. gin框架中HTTP请求和参数的解析

    1. 方法一: 通用的处理方法---Handle package main import ( "fmt" "github.com/gin-gonic/gin" ...

随机推荐

  1. Qt之QListView和QStandardItemModel用法

    note 个人理解, QListView 用于 显示数据,而数据的逻辑维护则由 QStandardItemModel 完成. QStandardItemModel 创建 if (nullptr == ...

  2. nanogui源码编译+下载

    MAC 没电了,哎..... 只能使用windows10将就了.    截至目前,我已经找到了两个nanogui项目,都是大佬. 分别为: A.https://github.com/dalerank/ ...

  3. c++11之字符串格式化

    1.关于 我知道的,C++20中引入了相当方便的字符串格式化,有兴趣的朋友,可以看下fmt库,截至目前,它实现了c++20中引入的字符串格式化绝大部分功能. 2.format 既然c++11中没有方便 ...

  4. BST的中序后继

    二叉搜索树中的顺序后继:从BST中找到指定节点的下一个节点. 比如1的下一个是2,2的下一个是3,4的下一个是5. 思路: 方法1:递归执行中序遍历,获取list,得到p的下一个.时间O(N),空间O ...

  5. Codeforces A. Orchestra

    A. Orchestra time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  6. 常见分布式唯一ID生成策略

    方法一: 用数据库的 auto_increment 来生成 优点: 此方法使用数据库原有的功能,所以相对简单 能够保证唯一性 能够保证递增性 id 之间的步长是固定且可自定义的 缺点: 可用性难以保证 ...

  7. CS5265/CS5267设计替代VL102+PS176 Typec转HDMI2.0音视频芯片

    目前USB TYPEC转HDMI2.0转换方案或者TYPEC转HDMI2.0转换器方案都是用PS176加一个PD芯片来实现,其中VL102是一颗PD协议芯片,PS176是一款DP转HDMI2.0视频解 ...

  8. MySQL高级查询与编程笔记 • 【第5章 常见数据库对象】

    全部章节   >>>> 本章目录 5.1 视图 5.1.1 视图的定义 5.1.2 视图的优点 5.1.3 视图的创建和使用 5.1.4 利用视图解决数据库的复杂应用 5.1. ...

  9. docker启动emqx官方镜像,顺便启动exporter

    注意,我是把把官方镜像放到了自己的仓库 1.emqx官方镜像启动 docker run -d --name emqx31 -p 1883:1883 -p 8083:8083 -p 8883:8883 ...

  10. 获取python的版本

    import sys # Syntax sugar. _ver = sys.version_info # 获取python版本 #: Python 2.x? is_py2 = (_ver[0] == ...