返回

Gin 请求与请求解析:Get 传参方式与参数解析的奥秘

后端

Gin 快速开发 | 02 - Gin 请求

1. Gin 请求与请求解析

1.1 GET 传参方式与参数解析

GET 请求可以通过请求地址传递参数,具体有两种:

  • 一种是将传递的参数放在请求 URI 中,既参数跟在请求地址的后面,使用问号分隔。例如:
/user?id=1&name=John
  • 另一种是将传递的参数放在请求头中,即在请求头中设置一个名为 X-Params 的字段,其值就是传递的参数。例如:
GET /user HTTP/1.1
Host: localhost:8080
X-Params: id=1&name=John

Gin 支持这两种 GET 请求参数传递方式。

func main() {
    r := gin.Default()

    // GET 请求参数解析
    r.GET("/user", func(c *gin.Context) {
        id := c.Query("id")
        name := c.Query("name")

        // 使用参数
        fmt.Printf("id: %s, name: %s", id, name)
    })

    // 启动 Gin 服务
    r.Run(":8080")
}

1.2 POST 请求参数解析

POST 请求的参数可以通过请求体传递。请求体中的参数可以是表单数据、JSON 数据或其他类型的数据。

func main() {
    r := gin.Default()

    // POST 请求参数解析
    r.POST("/user", func(c *gin.Context) {
        // 表单数据
        name := c.PostForm("name")

        // JSON 数据
        var user struct {
            Name string `json:"name"`
            Age  int    `json:"age"`
        }
        if err := c.BindJSON(&user); err != nil {
            // 处理错误
        }

        // 使用参数
        fmt.Printf("name: %s, age: %d", user.Name, user.Age)
    })

    // 启动 Gin 服务
    r.Run(":8080")
}