Gin教程(7)—表单数据
代码示例
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
var (
webEng *gin.Engine
)
func main() {
webEng = gin.Default()
webEng.POST("/form", HandleForm)
webEng.Run()
}
func HandleForm(c *gin.Context) {
//获取表单值,不存在时,使用默认值
name := c.DefaultPostForm("name", "guest")
//获取表单值,如果不存在或者内容为空,都将得到空字符串
mobile := c.PostForm("mobile")
var (
age string
has bool
)
//获取表单值,同时检测是否有设置
if age, has = c.GetPostForm("age"); !has {
c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{
"error": "lost age",
})
return
}
//获取表单数组
hobbies := c.PostFormArray("hobbies")
//获取表单数组,同时检测是否设置
if hobbies, has = c.GetPostFormArray("hobbies"); !has {
c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{
"error": "lost hobbies",
})
return
}
//获取表单map
marks := c.PostFormMap("marks")
//获取表单map,同时检测是否设置
if marks, has = c.GetPostFormMap("marks"); !has {
c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{
"error": "lost marks",
})
return
}
c.JSON(http.StatusOK, gin.H{
"name": name,
"mobile": mobile,
"age": age,
"hobbies": hobbies,
"marks": marks,
})
}
postman 构造请求和响应结果
curl 请求和响应
curl -X POST \
http://127.0.0.1:8080/form \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'name=root&mobile=13012345678&age=16&hobbies=music&hobbies=reading&marks%5Bgender%5D=female&marks%5Bcity%5D=tokyo'
详解/说明
- gin默认提供的普通表单请求处理方法有7种(数据绑定除外):
- Context.PostForm(), Context.GetPostForm()
- Context.PostFormArray(), Context.GetPostFormArray()
- Context.PostFormMap(), Context.GetPostFormMap()
- Context.DefaultPostForm()
- 其中DefaultPostForm() 可以设置参数默认值。
- 以 ‘Get’ 开始的函数在获取参数值的同时检测是否有设置。
- 直接以‘PostForm’开始的函数是对应‘Get’函数的封装,只是忽略了参数存在性的检测。
- 除此之外还有文件的表单上传处理方法,在下篇中详细讲解。
代码下载:https://github.com/IrvinYoung/gin-lessons
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 irvin.em@live.com。
文章标题:Gin教程(7)—表单数据
文章字数:463
本文作者:dino
发布时间:2019-11-29, 11:34:49
最后更新:2019-11-29, 11:38:26
原始链接:https://blog.walkbc.com/2019/11/29/gin-lesson-formData/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。
QQ交流群:273078549