我对 Golang 和 Gin(框架)比较陌生
我正在编写一些非常简单的 API 端点。但是我注意到 Gin 确实有些奇怪,如果我的代码中有任何代码或函数返回 false,我的其余代码或条件就不会执行,Gin 只会返回一个状态为空的 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 ,或者与此相关的任何函数返回布尔值 false 。整个函数只是终止并且不允许我按照我想要的方式处理错误并输出自定义 JSON 响应。我刚得到这个 {"status":""}
我 100% 确定这个问题来自 Gin ,但我不知道要激活或停用什么才能让我自己处理错误。我已经阅读了文档,但很明显我遗漏了一些东西。
森林海
相关分类