我尝试使用gin编写一个rest端点,它应该返回状态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
知道我错过了什么吗谢谢
1条答案
按热度按时间mspsb9vt1#
可能是
c.BindJSON()
错误,因为输入无效(尝试添加一些日志消息,看看有什么问题),设置400状态并写入头文件。由于代码没有在那里终止(没有return
),它继续到c.JSON(200, ...)
并尝试用200覆盖已经写入的头文件。