设置Gin的运行模式

Gin有3种运行模式: debugreleasetest, 其中debug模式会打印很多debug信息.

// Set gin mode.
gin.SetMode(viper.GetString("runmode"))

读取HTTP请求信息

  • 获取url子path: Param()

    router.GET("/user/:id", func(c *gin.Context) {
     // GET /user/john
     id := c.Param("id") // id为 "john"
    })
  • 获取url参数: Query()

    // GET /path?id=1234&name=Levin&value=
    id := c.Query("id") // "1234"
    name := c.Query("name") // "Levin"
    value := c.Query("value")  // ""
    foo := c.Query("foo")  // ""
  • 获取url参数, 不存在的参数使用默认值: DefaultQuery()

    // GET /?name=Levin&lastname=
    name := c.DefaultQuery("name", "unknown") // "Levin"
    id := c.DefaultQuery("id", "none") // "none"
    lastname := c.DefaultQuery("lastname", "none") // ""
  • 将HTTP请求体(body)按请求头Content-Type指定的格式解析到我们定义的Struct中: Bind()

    // curl -XPOST url -d'{"username":"admin","password":"admin"}'
    type Request struct {
    	Username string `json:"username"`
    	Password string `json:"password"`
    }
    
    var r Request
    c.Bind(&r)
    
    log.Debugf("username is: [%s], password is [%s]", r.Username, r.Password)
  • 获取HTTP请求头: GetHeader()

    contentType := c.GetHeader("Content-Type")
    log.Infof("Header Content-Type: %s", contentType)