首先假设已经搭建好整个服务,并创建了几个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表单参数。
近期评论