go gin 获取 Post 和 Get 数据

参考:​​https://www.kancloud.cn/shuangdeyu/gin_book/949426​

可以通过两种方式,最方便的是用 bind 方法,提前定义好 struct,然后匹配到对应的 post/get 数据。

比如我有一个 user 数据需要获取,后面的​​form:"Id"​​ 等对应的是前端发送给服务器里的数据属性名

type UserForm struct {
Id int `form:"Id"`
IsPublic int `form:"IsPublic"`
Name string `form:"Name"`
Phone string `form:"Phone"`
Message string `form:"Message"`
Plate string `form:"Plate"`
Password string `form:"Password"`
WxQr string `form:"WxQr"`
Desc string `form:"Desc"`
Homepage string `form:"Homepage"`
GaodeInvitation string `form:"GaodeInvitation"`
DateEdit string `form:"DateEdit"`
DateRegister string `form:"DateRegister"`
Hash string `form:"Hash"`
VisitCount int `form:"VisitCount"`
}

前端发送的数据应该是这样的:

{
Id: 1,
Name: "Tina",
IsPublic: 1,
Phone: "1238357231",
...
}

一、使用绑定的方式获取

router.POST("/user/edit", func(ctx *gin.Context) {
var user UserForm
if err := ctx.ShouldBind(&user); err != nil {
// 处理错误请求
return
}
// 这里已经将 Post 数据绑定到 user 中了
}

go gin 获取 Post 和 Get 数据_post

二、 使用直接获取内容的方式

还有一种方式是直接从 Post 数据中单独取得某个属性的值
数据还是以上面的方式传送到服务器

router.POST("/user/edit", func(ctx *gin.Context) {
name := ctx.PostForm("Name")
}

go gin 获取 Post 和 Get 数据_数据_02

这样你就能直接获取其中的某个值。

另外还有 ​​PostFormMap​​​ ​​PostFormArray​​ 可用,对应数组和对象