为了账号安全,请及时绑定邮箱和手机立即绑定

使用 GIN Framework 返回状态码 400 去休息 api

使用 GIN Framework 返回状态码 400 去休息 api

Go
扬帆大鱼 2022-12-13 16:04:18
我正在尝试使用 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 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

可能是c.BindJSON()由于无效输入而导致的错误(尝试在那里添加一些日志消息以查看错误)并且设置 400 状态并写入标头。由于代码不会在那里终止(没有return),它会继续c.JSON(200, ...)并尝试用 200 覆盖已经写入的标头。


err := c.BindJSON(&parent)

if err != nil {

    log.Println(err)

    return

}


查看完整回答
反对 回复 2022-12-13
  • 1 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信