gin ajax 获取请求参数,gin请求参数处理
本章介绍Gin框架获取请求参数的方式
1.获取Get 请求参数
Get请求url例子:/path?id=1234&name=Manu&value=111
获取Get请求参数的常用函数:
func (c *Context) Query(key string) string
func (c *Context) DefaultQuery(key, defaultValue string) string
func (c *Context) GetQuery(key string) (string, bool)
例子:
func Handler(c *gin.Context) {
//获取name参数, 通过Query获取的参数值是String类型。
name := c.Query("name")
//获取name参数, 跟Query函数的区别是,可以通过第二个参数设置默认值。
name := c.DefaultQuery("name", "sockstack")
//获取id参数, 通过GetQuery获取的参数值也是String类型,
// 区别是GetQuery返回两个参数,第一个是参数值,第二个参数是参数是否存在的bool值,可以用来判断参数是否存在。
id, ok := c.GetQuery("id")
if !ok {
// 参数不存在
}
}
提示:GetQuery函数,判断参数是否存在的逻辑是,参数值为空,参数也算存在,只有没有提交参数,才算参数不存在。
2.获取Post请求参数
获取Post请求参数的常用函数:
func (c *Context) PostForm(key string) string
func (c *Context) DefaultPostForm(key, defaultValue string) string
func (c *Context) GetPostForm(key string) (string, bool)
例子:
func Handler(c *gin.Context) {
//获取name参数, 通过PostForm获取的参数值是String类型。
name := c.PostForm("name")
// 跟PostForm的区别是可以通过第二个参数设置参数默认值
name := c.DefaultPostForm("name", "sockstack")
//获取id参数, 通过GetPostForm获取的参数值也是String类型,
// 区别是GetPostForm返回两个参数,第一个是参数值,第二个参数是参数是否存在的bool值,可以用来判断参数是否存在。
id, ok := c.GetPostForm("id")
if !ok {
// 参数不存在
}
}
3.获取URL路径参数
获取URL路径参数,指的是获取 /user/:id 这类型路由绑定的参数,这个例子绑定了一个参数id。
获取url路径参数常用函数:
func (c *Context) Param(key string) string
例子:
r := gin.Default()
r.GET("/user/:id", func(c *gin.Context) {
// 获取url参数id
id := c.Param("id")
})
4.将请求参数绑定到struct对象
前面获取参数的方式都是一个个参数的读取,比较麻烦,Gin框架支持将请求参数自动绑定到一个struct对象,这种方式支持Get/Post请求,也支持http请求body内容为json/xml格式的参数。
例子:
下面例子是将请求参数绑定到User struct对象。
// User 结构体定义
type User struct {
Name string `json:"name" form:"name"`
Email string `json:"email" form:"email"`
}
通过定义struct字段的标签,定义请求参数和struct字段的关系。
下面对User的Name字段的标签进行说明。
struct标签说明:
标签
说明
json:"name"
数据格式为json格式,并且json字段名为name
form:"name"
表单参数名为name
提示:你可以根据自己的需要选择支持的数据类型,例如需要支持json数据格式,可以这样定义字段标签: json:"name"
下面看下控制器代码:
r.POST("/user/:id", func(c *gin.Context) {
// 初始化user struct
u := User{}
// 通过ShouldBind函数,将请求参数绑定到struct对象, 处理json请求代码是一样的。
// 如果是post请求则根据Content-Type判断,接收的是json数据,还是普通的http请求参数
if c.ShouldBind(&u) == nil {
// 绑定成功, 打印请求参数
log.Println(u.Name)
log.Println(u.Email)
}
// http 请求返回一个字符串
c.String(200, "Success")
})
ShouldBind有一系列函数,大致就是把前面的方式绑定到结构体的方式,如:ShouldBindUri()、ShouldBindQuery()等等,用法和ShouldBind类似,这里就不展开介绍了
提示:如果你通过http请求body传递json格式的请求参数,并且通过post请求的方式提交参数,则需要将Content-Type设置为application/json, 如果是xml格式的数据,则设置为application/xml
5.获取请求头信息
获取请求头的常用函数:
func (c *Context) GetHeader(key string) string
例子:
func Handler(c *gin.Context) {
//获取请求头Host的值
host := c.GetHeader("Host")
//控制台输出host的值
fmt.Println(host)
}
6.获取客户IP
r := gin.Default()
r.GET("/ip", func(c *gin.Context) {
// 获取用户IP
ip := c.ClientIP()
})
出处gin从入门到实践更多精彩文章,请关注我的博客SOCKSTACK,分享我的工作经验。
gin ajax 获取请求参数,gin请求参数处理相关推荐
- gin ajax 获取请求参数,go的gin框架从请求中获取参数的方法
前言: go语言的gin框架go里面比较好的一个web框架, github的start数超过了18000.可见此框架的可信度 如何获取请求中的参数 假如有这么一个请求: POST /post/te ...
- jquery的ajax获取form表单数据
jq是对dom进行的再次封装.是一个js库,极大简化了js使用 jquery库在js文件中,包含了所有jquery函数,引用: 这里主要介绍jquery获取页面form数据使用的过程 html页面代码 ...
- gin post 数据参数_gin请求参数处理
本章介绍Gin框架获取请求参数的方式 1.获取Get 请求参数 Get请求url例子:/path?id=1234&name=Manu&value=111 获取Get请求参数的常用函数: ...
- 获取referer中的请求参数_Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法...
本文实例讲述了Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法.分享给大家供大家参考,具体如下: HTTP请求中,如果是get请求,那么 ...
- Get和Post请求和对应的参数获取
1.get和post的请求方式 <!DOCTYPE html> <html lang="en"> <head><meta charset= ...
- php中jquery ajax请求参数,浅谈Jquery中Ajax异步请求中的async参数的作用
之前不知道这个参数的作用,上网找了前辈的博客,在此收录到自己的博客,希望能帮到更多的朋友: test.html asy.js function testAsync{ var temp; $.ajax( ...
- go系列之利用Gin框架获取form参数
利用Gin框架获取form参数 除了通过URL查询参数提交数据到服务器外,常用的还有通过Form表单的方式.Form表单相比URL查询参数,用户体验好,可以承载更多的数据,尤其是文件上传,所以也更为方 ...
- jmeter从mysql取值_Jmeter获取数据库值并作为参数请求(转载)
转载自:https://www.cnblogs.com/mawenqiangios/p/11088672.html 01Jmeter连接数据库 1.添加JDBC Connection Configur ...
- python excel token_python+excel接口自动化获取token并作为请求参数进行传参操作
1.登录接口登录后返回对应token封装: import json import requests from util.operation_json import OperationJson from ...
最新文章
- Arm Cortex-M23 MCU,Arm Cortex-M33 MCU与RISC-V MCU技术
- Recommenders with TensorRT
- 李宗纯:图机器学习在度小满风控中的应用
- python 函数参数传递 格式_Python学习6.1_函数参数及参数传递
- 在Google Android模拟器中使用SD卡(命令行和eclipse环境)
- oracle apply handler,做什么BaseHandler.apply_response_修复在django吗?
- 3.2.1 虚拟内存的基本概念
- java概述、安装、配置环境、运行
- 一幅图看懂Python编程
- CS224n笔记一:开端
- 5门可能衰落的编程语言
- python爬取百度贴吧中的所有邮箱_python写的百度贴吧邮箱采集(带界面)
- python 全中文匹配字符_Python教程:进程和线程amp;正则表达式
- 哪吒U Pro试驾:透明A柱超实用、满电500公里保底续航
- Android影音播放器需求分析,321影音全能影音播放器源码
- win10系统怎么把语言栏弄回去
- 使用caffe对mnist进行训练遇到的点点滴滴
- 干辣椒和鲜辣椒的区别
- 免费QQ群管助手-帮你管理QQ群
- 【学习日志】学习总结
热门文章
- 插入数据的时候出现错误:Error during job, obtaining debugging information…
- matlab 功率谱密度 汉宁窗_[振动与测试 2] 什么是PSD(功率谱密度)
- java中广告维护轮播图怎么做_Banner广告轮播图
- 腾讯视频如何退出登陆
- 华硕台式机重装系统教程方法
- 大一计算机实验报告7,计算机一级实验报告7.doc
- 前端给后端传递数据的时候,有些后端自己可以获取到的值应该由前端传递吗?
- RPC(一)[概述]
- java基本数据类型转为String类型的4种常见方法
- linux my.cnf基本参数,Linux中MySQL配置文件my.cnf参数说明