一、获取querystring参数

querystring 指的是URL中?后面携带的参数,例如:/user/search?username=小王子&address=沙河。

获取请求的querystring参数的方法如下:

  1. func main() {
  2. //Default返回一个默认的路由引擎
  3. r := gin.Default()
  4. r.GET("/user/search", func(c *gin.Context) {
  5. username := c.DefaultQuery("username", "小王子") // 相当于给参数一个默认值
  6. //username := c.Query("username")
  7. address := c.Query("address")
  8. //输出json结果给调用方
  9. c.JSON(http.StatusOK, gin.H{
  10. "message": "ok",
  11. "username": username,
  12. "address": address,
  13. })
  14. })
  15. r.Run()
  16. }

二、获取form参数

当前端请求的数据通过form表单提交时,例如向/user/search发送一个POST请求,获取请求数据的方式如下:

  1. func main() {
  2. //Default返回一个默认的路由引擎
  3. r := gin.Default()
  4. r.POST("/user/search", func(c *gin.Context) {
  5. // DefaultPostForm取不到值时会返回指定的默认值
  6. //username := c.DefaultPostForm("username", "小王子")
  7. username := c.PostForm("username")
  8. address := c.PostForm("address")
  9. //输出json结果给调用方
  10. c.JSON(http.StatusOK, gin.H{
  11. "message": "ok",
  12. "username": username,
  13. "address": address,
  14. })
  15. })
  16. r.Run(":8080")
  17. }

三、获取json参数

当前端请求的数据通过JSON提交时,例如向 /json 发送一个POST请求,则获取请求参数的方式如下:

  1. r.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. })

四、获取path参数

有的参数会通过 URL 中的路径进行传递,比如: /user/search/yxr
获取请求URL路径中的参数的方式如下。

  1. func main() {
  2. //Default返回一个默认的路由引擎
  3. r := gin.Default()
  4. r.GET("/user/search/:username/:address", func(c *gin.Context) {
  5. username := c.Param("username") //获取路径中对应的参数
  6. address := c.Param("address")
  7. //输出json结果给调用方
  8. c.JSON(http.StatusOK, gin.H{
  9. "message": "ok",
  10. "username": username,
  11. "address": address,
  12. })
  13. })
  14. r.Run(":8080")
  15. }