问题描述
Gin 针对于 struct tag,绑定json参数的问题,无法正确达到strcut tag的需求
问题出现的环境背景及自己尝试过哪些方法
尝试不同postmane的请求协议等等
相关代码
// case one:
type Request struct {
UID string `form:"uid" binding:"required"`
User string `form:"user" binding:"required"`
}
//case two:
type Request struct {
UID string `form:"uid" binding:"required,uid"`
User string `form:"user" binding:"required,user"`
}
if err := c.ShouldBind(¶ms); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
你期待的结果是什么?实际看到的错误信息又是什么?
postman:
{
"uid" : "1",
"user" : "admin"
}
结果:"Key: 'Request.UID' Error:Field validation for 'UID' failed on the 'uid' tag"
"Key: 'Request.User' Error:Field validation for 'User' failed on the 'user' tag"
如何正确请求case two
你这里的
binding
里的uid
和user
是啥?验证的tag
基于 https://github.com/go-playground/validator 这个库,绑定的是验证方法 https://github.com/gin-gonic/gin#custom-validators 如果是自定义验证方法,可以按照上面这个配置,看报错我感觉你这里是不是错误理解了。如果是要绑定到json
字段输出,在tag中使用json:"uid"
或json:"user"
这种形式了。