Go rest api 使用 GIN Framework 返回状态代码 400
Go rest api using GIN Framework returning status code 400
我正在尝试使用 gin 编写一个 rest 端点,它应该 return 状态 200。我也以相同的方式对其进行编码,但我得到状态 400。我的代码如下:
router.POST("/parent", func(c *gin.Context) {
var parent PARENT
err := c.BindJSON(&parent)
con,err := sql.Open("mysql", "myuser:mypass@/mydb")
res,err := con.Exec(" insert into parent (username, mobile, email, password) values (?,?,?,?) ", parent.USERNAME, parent.MOBILE, parent.EMAIL, parent.PASSWORD)
id,err := res.LastInsertId()
if err != nil {
con.Close()
}
c.JSON(200, gin.H{"success" : 1, "userid" : id})
return
})
我总是在杜松子酒日志中得到这个:
[GIN-debug] [WARNING] Headers were already written. Wanted to override status code 400 with 200
知道我错过了什么吗?
谢谢
可能 c.BindJSON()
错误是因为输入无效(尝试在那里添加一些日志消息以查看错误)并且设置 400 状态并写入 headers。由于代码不会在那里终止(没有 return
),它会继续 c.JSON(200, ...)
并尝试用 200.
覆盖已经写入的 headers
err := c.BindJSON(&parent)
if err != nil {
log.Println(err)
return
}
我正在尝试使用 gin 编写一个 rest 端点,它应该 return 状态 200。我也以相同的方式对其进行编码,但我得到状态 400。我的代码如下:
router.POST("/parent", func(c *gin.Context) {
var parent PARENT
err := c.BindJSON(&parent)
con,err := sql.Open("mysql", "myuser:mypass@/mydb")
res,err := con.Exec(" insert into parent (username, mobile, email, password) values (?,?,?,?) ", parent.USERNAME, parent.MOBILE, parent.EMAIL, parent.PASSWORD)
id,err := res.LastInsertId()
if err != nil {
con.Close()
}
c.JSON(200, gin.H{"success" : 1, "userid" : id})
return
})
我总是在杜松子酒日志中得到这个:
[GIN-debug] [WARNING] Headers were already written. Wanted to override status code 400 with 200
知道我错过了什么吗? 谢谢
可能 c.BindJSON()
错误是因为输入无效(尝试在那里添加一些日志消息以查看错误)并且设置 400 状态并写入 headers。由于代码不会在那里终止(没有 return
),它会继续 c.JSON(200, ...)
并尝试用 200.
err := c.BindJSON(&parent)
if err != nil {
log.Println(err)
return
}