我對 Golang 和 Gin(框架)比較陌生我正在編寫一些非常簡單的 API 端點。但是我注意到 Gin 確實有些奇怪,如果我的代碼中有任何代碼或函數(shù)返回 false,我的其余代碼或條件就不會執(zhí)行,Gin 只會返回一個狀態(tài)為空的 JSON:{“地位”:””}這是一個非常簡單的代碼來解釋我的意思在 functions.go 文件中,我有:func VerifyUserLogin(username,password,userAgent string) (string, string) { userData := Users{} userQueryColumn := "username=?" // if they are trying to login with email if nEmailHelpers.EmailIsValid(username) == true{ userQueryColumn = "email=?" } if getUserData := db.Select("password").Where(userQueryColumn, strings.ToLower(username)).First(&userData); getUserData.Error != nil { // Meaning there was an error, most likely no data found , so we just return false todo improve this error handling later to handle more specific errors return "", feedback["InvalidLogin"] } else { if getUserData.RowsAffected == 1 { if nSecurityHelpers.CheckPasswordHash(password, userData.Password)==true { token, tokenError := CreateToken(username, userAgent, false, 60) if tokenError == nil { return token, feedback["ValidLogin"] } else { return "", feedback["TokenNotGenerated"] } } else { return "", feedback["InvalidLogin"] } } return "", feedback["InvalidLogin"] }}在另一個引用 functions.go 文件的 go 文件中:func main(){ router := gin.Default() router.POST ("login",loginUser) router.Run()}如果我所有的輸入都是正確的,一切順利(用戶名存在且密碼正確)。但我必須處理用戶名或密碼無效的情況。如果出于任何原因 getUserData 或 nSecurityHelpers.CheckPasswordHash() 是 false ,或者與此相關(guān)的任何函數(shù)返回布爾值 false 。整個函數(shù)只是終止并且不允許我按照我想要的方式處理錯誤并輸出自定義 JSON 響應(yīng)。我剛得到這個 {"status":""}我 100% 確定這個問題來自 Gin ,但我不知道要激活或停用什么才能讓我自己處理錯誤。我已經(jīng)閱讀了文檔,但很明顯我遺漏了一些東西。
1 回答

森林海
TA貢獻2011條經(jīng)驗 獲得超2個贊
我已經(jīng)解決了這個問題,感謝所有試圖提供幫助的人這是一個拼寫錯誤,導致另一個文件中的問題是“InValidLogin”而不是“InvalidLogin”。真的很微妙
- 1 回答
- 0 關(guān)注
- 182 瀏覽
添加回答
舉報
0/150
提交
取消