(1) 获取查询参数

  • context.Query()
  • context.DefaultQuery()

    1. engine.GET("/hello", func(context *gin.Context) {
    2. fmt.Println(context.FullPath())
    3. username := context.Query("name")
    4. fmt.Println(username)
    5. context.Writer.Write([]byte("Hello," + username))
    6. })

    (2) 获取路径参数

  • context.Param()

    1. engine.DELETE("/user/:id", DeleteHandle)
    2. func DeleteHandle(context *gin.Context) {
    3. fmt.Println(context.FullPath())
    4. userID := context.Param("id")
    5. fmt.Println(userID)
    6. context.Writer.Write([]byte("Delete user's id : " + userID))
    7. }

    (3) 获取Form参数

    1. engine.POST("/user/search", func(c *gin.Context) {
    2. // DefaultPostForm取不到值时会返回指定的默认值
    3. //username := c.DefaultPostForm("username", "小王子")
    4. username := c.PostForm("username")
    5. address := c.PostForm("address")
    6. //输出json结果给调用方
    7. c.JSON(http.StatusOK, gin.H{
    8. "message": "ok",
    9. "username": username,
    10. "address": address,
    11. })
    12. })

    (4) 获取Json参数

    1. enginer.POST("/json", func(c *gin.Context) {
    2. // 注意:下面为了举例子方便,暂时忽略了错误处理
    3. b, _ := c.GetRawData() // 从c.Request.Body读取请求数据
    4. // 定义map或结构体
    5. var m map[string]interface{}
    6. // 反序列化
    7. _ = json.Unmarshal(b, &m)
    8. c.JSON(http.StatusOK, m)
    9. })

    更便利的获取请求参数的方式,参见 参数绑定 小节。

    (5) 获取Header

    1. // 验证token的中间件
    2. func Auth(c *gin.Context) {
    3. tokenHeader := c.Request.Header["token"]
    4. if len(tokenHeader) == 0 {
    5. c.Abort()
    6. }
    7. tokenString := tokenHeader[0]
    8. if GetTokenUid(tokenString) == 0 {
    9. c.Abort()
    10. }
    11. c.Next() // 认证通过, 调用后续的处理函数
    12. }