1.json的数据自动解析和绑定

// 定义接收数据的结构体 
type Test struct { 
	// binding:"required"修饰的字段,若接收为空值,则报错,是必须字段 
	Name    string `json:"name" binding:"required"` 
	Password string `json:"password" binding:"required"` 
} 
 
func main() { 
	// 1.创建路由 
	r := gin.Default() 
	// JSON绑定 
	r.POST("testJson", func(c *gin.Context) { 
		// 声明接收的变量 
		var json Test 
		// 将request的body中的数据,自动按照json格式解析到结构体 
		if err := c.ShouldBindJSON(&json); err != nil { 
			// 返回错误信息 
			println(err) 
			// gin.H封装了生成json数据的工具 
			c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) 
			return 
		} 
	    fmt.Printf("name:%v \n",json.Name) 
	    fmt.Printf("password:%v \n",json.Password) 
 
		c.JSON(http.StatusOK, gin.H{"status": "200"}) 
	}) 
	r.Run(":8080") 
} 

在这里插入图片描述

2.表单数据解析和绑定

// 定义接收数据的结构体 
type Test struct { 
	// binding:"required"修饰的字段,若接收为空值,则报错,是必须字段 
	Name    string `form:"name" binding:"required"` 
	Password string `form:"password" binding:"required"` 
} 
 
func main() { 
	// 1.创建路由 
	r := gin.Default() 
	// JSON绑定 
	r.POST("testForm", func(c *gin.Context) { 
		// 声明接收的变量 
		var form Test 
		// Bind()默认解析并绑定form格式 
		// 根据请求头中content-type自动推断 
		if err := c.Bind(&form); err != nil { 
			c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) 
			return 
		} 
	    fmt.Printf("name:%v \n",form.Name) 
	    fmt.Printf("password:%v \n",form.Password) 
		c.JSON(http.StatusOK, gin.H{"status": "200"}) 
	}) 
	r.Run(":8080") 
} 

在这里插入图片描述

3. URI数据解析和绑定

// 定义接收数据的结构体 
type Test struct { 
	// binding:"required"修饰的字段,若接收为空值,则报错,是必须字段 
	Name    string `uri:"name" binding:"required"` 
	Password string `uri:"password" binding:"required"` 
} 
 
func main() { 
	// 1.创建路由 
	r := gin.Default() 
	// JSON绑定 
	r.POST("testUri", func(c *gin.Context) { 
		// 声明接收的变量 
		var uri Test 
		// 根据请求头中content-type自动推断 
		if err := c.Bind(&uri); err != nil { 
			c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) 
			return 
		} 
	    fmt.Printf("name:%v \n",uri.Name) 
	    fmt.Printf("password:%v \n",uri.Password) 
		c.JSON(http.StatusOK, gin.H{"status": "200"}) 
	}) 
	r.Run(":8080") 
} 
 

在这里插入图片描述


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

go中的GORM的原生sql