我正在嘗試使用 gin 撰寫一個應該回傳狀態 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
知道我錯過了什么。謝謝
uj5u.com熱心網友回復:
可能c.BindJSON()由于輸入無效而導致錯誤(嘗試在此處添加一些日志訊息以查看問題所在)并且設定 400 狀態并寫入標頭。由于代碼不會在那里終止(沒有return),它會繼續c.JSON(200, ...)并嘗試用 200 覆寫已寫入的標頭。
err := c.BindJSON(&parent)
if err != nil {
log.Println(err)
return
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/473032.html
標籤:去
