【问题标题】:Why golang go-gin error always returning empty object为什么golang go-gin错误总是返回空对象
【发布时间】:2021-02-22 01:47:01
【问题描述】:

我试图在 gin golang 中解析错误验证,但产生一个空对象“{}”

这是我的第一次尝试:

resp, err := userService.UserRegistrationService(c)

if err != nil {
    c.JSON(http.StatusBadRequest, gin.H{"error": err})
    return
}

返回:

{
    "error": [
        {},
        {}
    ]
}

这是我的第二次尝试:

resp, err := userService.UserRegistrationService(c)

if err != nil {
    dada := fmt.Errorf("%v", err)
    c.JSON(http.StatusBadRequest, dada)
    return
}

返回

{}

看看我是否调试了err参数:

resp, err := userService.UserRegistrationService(c)
    fmt.Println(err)
    if err != nil {
        dada := fmt.Errorf("%v", err)
        fmt.Println(dada)
        c.JSON(http.StatusBadRequest, dada)
        return
    }

它的回报:

2020/11/10 12:41:46 stdout: Key: 'User.Email' Error:Field validation for 'Email' failed on the 'required' tag
2020/11/10 12:41:46 stdout: Key: 'User.Password' Error:Field validation for 'Password' failed on the 'required' tag

你们能帮帮我吗,试图在任何地方搜索仍然没有运气,我想像这样返回:

{
    "MyRequestStruct.PropertyOne": {
        "FieldNamespace": "MyRequestStruct.PropertyOne",
        "NameNamespace": "PropertyOne",
        "Field": "PropertyOne",
        "Name": "PropertyOne",
        "Tag": "required",
        "ActualTag": "required",
        "Kind": 24,
        "Type": {},
        "Param": "",
        "Value": ""
    },
    "MyRequestStruct.PropertyTwo": {
        "FieldNamespace": "MyRequestStruct.PropertyTwo",
        "NameNamespace": "PropertyTwo",
        "Field": "PropertyTwo",
        "Name": "PropertyTwo",
        "Tag": "required",
        "ActualTag": "required",
        "Kind": 24,
        "Type": {},
        "Param": "",
        "Value": ""
    }
}

【问题讨论】:

    标签: go go-gin


    【解决方案1】:

    在发布为json 响应时,您应该尝试err.Error() 而不是err

    试试这个:

    resp, err := userService.UserRegistrationService(c)
    
    if err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }
    

    【讨论】:

    • 不,err.Error() 将返回字符串:{ "error": "Key: 'User.Email' Error:Field validation for 'Email' failed on the 'required' tag\nKey: 'User.Password' Error:Field validation for 'Password' failed on the 'required' tag" }
    • 我认为您使用的err 的字段不是exported。这就是为什么响应正文中没有任何内容的原因。你能检查一下你在代码中使用的err 结构吗?
    猜你喜欢
    • 2022-01-27
    • 2011-09-27
    • 2013-07-03
    • 1970-01-01
    • 2014-04-20
    • 2019-12-05
    • 1970-01-01
    • 2021-08-12
    • 2021-07-22
    相关资源
    最近更新 更多