数据解析与绑定
一、JSON数据解析与绑定
先创建一个数据结构体,使用ShouldBindJSON函数,注意传入参数是结构体的指针
func main() {
engine := gin.Default()
var Login Login
engine.POST("/login", func(c *gin.Context) {
if err := c.ShouldBindJSON(&Login); err != nil {
fmt.Println(err.Error())
return
}
//验证登录
})
engine.Run()
}
type Login struct {
User string `from:"username" json:"username"`
Password string `from: "password" json:"password"`
}
二、表单数据解析
与JSON解析类似,使用的是Bind函数,传入参数依旧是指针,两个的代码看起来是只修改了函数名,主要原因是结构体的设计时已经将两种格式全部设计进去,所以看起来没什么区别。
func main() {
engine := gin.Default()
var Login Login
engine.POST("/login", func(c *gin.Context) {
if err := c.Bind(&Login); err != nil {
fmt.Println(err.Error())
return
}
//验证登录
})
engine.Run()
}
type Login struct {
User string `from:"username" json:"username"`
Password string `from: "password" json:"password"`
}
三、URI参数解析与绑定
这里就可以明显看出来,结构体的变化,不同的函数对应不同的数据类型的结构体设计,其次这种数据绑定方式主要用于GET方法,因为GET方法可以在URI带入参数。
func main() {
engine := gin.Default()
var Login Login
engine.GET("/login/:name/:password", func(c *gin.Context) {
if err := c.ShouldBindUri(&Login); err != nil {
fmt.Println(err.Error())
return
}
//
})
engine.Run()
}
type Login struct {
User string `from:"username" json:"username" uri:"username"`
Password string `from: "password" json:"password" uri: "password"`
}