GO Gin 如果我的代码的任何部分返回 false,则继续返回空状态

我对 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 ,但我不知道要激活或停用什么才能让我自己处理错误。我已经阅读了文档,但很明显我遗漏了一些东西。


开心每一天1111
浏览 129回答 1
1回答

森林海

我已经解决了这个问题,感谢所有试图提供帮助的人这是一个拼写错误,导致另一个文件中的问题是“InValidLogin”而不是“InvalidLogin”。真的很微妙
打开App,查看更多内容
随时随地看视频慕课网APP