Gin框架之参数绑定

为了能够更方便的获取请求相关参数,提高开发效率,我们可以基于请求的Content-Type识别请求数据类型并利用反射机制自动提取请求中QueryStringform表单JSONXML等参数到结构体中。 下面的示例代码演示了.ShouldBind()强大的功能,它能够基于请求自动提取JSONform表单QueryString类型的数据,并把值绑定到指定的结构体对象。

以下示例分别是对QueryString、form、json进行参数绑定。

注意:

1、结构体内部属性名大写

 2、加地址符:

代码:

 1 import (
 2     "github.com/gin-gonic/gin"
 3     "net/http"
 4 )
 5 
 6 type User struct {
 7     Username string `json:"user" form:"userform"`
 8     Password string `json:"pwd" form:"pwdform"`
 9 }
10 
11 func main() {
12     r := gin.Default()
13     var u User
14     //queryString数据绑定
15     r.GET("/user", func(c *gin.Context) {
16         //参数绑定
17         err := c.ShouldBind(&u)
18         if err == nil {
19             c.JSON(http.StatusOK, gin.H{
20                 "user": u.Username,
21                 "pwd":  u.Password,
22             })
23         }
24     })
25     //form表单数据绑定
26     r.POST("/form", func(c *gin.Context) {
27         //参数绑定
28         err := c.ShouldBind(&u)
29         if err == nil {
30             c.JSON(http.StatusOK, gin.H{
31                 "user": u.Username,
32                 "pwd":  u.Password,
33             })
34         }
35     })
36     //form表单数据绑定
37     r.POST("/json", func(c *gin.Context) {
38         //参数绑定
39         err := c.ShouldBind(&u)
40         if err == nil {
41             c.JSON(http.StatusOK, gin.H{
42                 "user": u.Username,
43                 "pwd":  u.Password,
44             })
45         }
46     })
47     r.Run(":9090")
48 
49 }

运行结果使用postman模拟,分别是:

对querystring进行参数绑定结果:

对form表单进行参数绑定结果:

对json进行参数绑定结果:

猜你喜欢

转载自www.cnblogs.com/yh2924/p/12378030.html