在Gin框架中获取外部请求中Get和Post的参数

Dynamic Earth - Ocean Currents

首先假设已经搭建好整个服务,并创建了几个API用于测试。

在Get请求中,假设由以下函数处理,则获取内容的代码为:

type SearchParams struct {  
   //字段需要定义为form
   UserID string `form:"user_id"`  
   Date   int64  `form:"date"`  
}


func GetDurationsByParams(c *gin.Context) {  
   //定义的结构体
   var searchParams duration.SearchParams  
   //使用ShouldBind函数即可获取解析后的结构体。注意上面的子段要标记为form。
   err := c.ShouldBind(&searchParams)  
   if err != nil {  
      c.JSON(500, gin.H{"status": "error", "message": err.Error()})  
      return  
   }
}

在Post请求中,假设由以下函数处理,内容在body里,则获取内容的代码为:

type UserRegister struct {  
   Username string `json:"username"`  
   Password string `json:"password" binding:"required"`  
   Email    string `json:"email" binding:"required"`  
}
//此处结构体要设置为json
func Register(c *gin.Context) {  
   var userReq request.UserRegister  
  
   err := c.BindJSON(&userReq)
}

参考来源:(96条消息) Golang发送GET网络请求并绑定参数到结构体(gin框架)_golang get请求_sunriseYJP的博客-CSDN博客 Gin框架介绍及使用 | 李文周的博客 (liwenzhou.com) 补充:c.shouldBind()函数 此函数功能十分强大,体现在他可以自动的去绑定多种类型的参数,可以绑定Post请求json类型的参数,如果是 POST 请求,首先检查 content-type 是否为 JSON 或 XML,然后再使用 Form(form-data) 还可以绑定Get请求Params参数(此时只能使用 Form 绑定引擎Params参数),也就是在结构体后面打上form标签 同时也可以绑定form表单参数。