go gin框架解析json


Gin框架踩坑——[GIN-debug] [WARNING] Headers were already written. Wanted to override status code 400 with 200


這個報錯場景為 : 1.Gin框架、2.編寫POST請求方式接口、3.使用結構體綁定方式接受參數

 

該坑現象為 : 當結構體綁定參數失敗時(即參數有誤、傳錯時),httpcode為400,無論開發者如何強制返回httpcode,code就是400

原因 : 行為 – 這些方法MustBindWith在引擎蓋下使用。如果存在綁定錯誤,則請求被中止c.AbortWithError(400, err).SetType(ErrorTypeBind)。這將響應狀態碼設置為400,並將Content-Type標題設置為text/plain; charset=utf-8。請注意,如果在此之后嘗試設置響應代碼,將會導致警告[GIN-debug] [WARNING] Headers were already written. Wanted to override status code 400 with 422。如果您希望更好地控制行為,請考慮使用ShouldBind等效的方法。

 

 

解決方法 : 綁定結構體的方法一概不適用【BindJSON】改為【ShouldBind】

//接收json數據形式
param := make(map[string]interface{})
err := c.ShouldBind(&param) if err != nil {
    panic(&errs.JsonFromatError)
}
photoV, _ := param["photo"].(string) //接口類型轉字符串
photoValue := util.PhotoBase64Start(photoV)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM