1 問(wèn)題描述
在 Gin 框架中,當(dāng)多次調(diào)用 ShouldBind() 或 ShouldBindJSON() 方法時(shí),會(huì)導(dǎo)致請(qǐng)求體的數(shù)據(jù)流被讀取多次,從而出現(xiàn) “EOF” 錯(cuò)誤。
例如在api層綁定了參數(shù),又自定義了讀取參數(shù)或綁定參數(shù)的中間件,會(huì)造成重復(fù)調(diào)用。
[ERROR] 2023/08/07 14:36:48 {“user_id”:“975674f531784289bfba3ee011ec0af0”,“trace_id”:“ae6331c69b5d474a8980c6f6ef8b86e2”,“error”:“EOF”,“position”:[{“FileName”:“D:/nscp_code/nscp/api/v1/organization.go”,“FuncName”:“nscp/api/v1.(*origanizationApi).FindByCompanyIds”,“Line”:63}]}文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-632208.html
2 解決:替換為ShouldBindBodyWith
// 原本
c.ShouldBindJSON
c.ShouldBind
// 替換為
c.ShouldBindBodyWith(&req,binding.JSON)
此時(shí)body 會(huì)cache 到上下文中,重復(fù)綁定不會(huì)有問(wèn)題文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-632208.html
到了這里,關(guān)于【go】GIN參數(shù)重復(fù)綁定報(bào)錯(cuò)EOF問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!