需要注意的是,从goframe v1.16
版本开始,如果参数采用结构化的输入输出管理,HTTP
请求的数据校验不再受结构体默认值的影响,底层调用的是gvalid
组件的CheckStructWithData
方法,即直接使用请求的参数执行数据校验,而给定的结构体对象仅用于校验规则和错误提示信息的定义管理。
我们将之前的示例做下调整,增加v
校验标签。
p
标签是可选的,默认情况下会通过 忽略特殊字符+不区分大小写 的规则进行属性名称匹配转换,默认匹配规则满足绝大部分业务场景。
为了演示测试效果,这里在正常的返回结果属性中将RegisterReq
对象返回,由于该对象没有绑定json
标签,因此返回的JSON
字段将会为其属性名称。
示例2,校验错误处理
可以看到在以上示例中,当请求校验错误时,所有校验失败的错误都返回了,这样对于用户体验不是特别友好。当产生错误时,我们可以将校验错误转换为gvalid.Error
接口对象,随后可以通过灵活的方法控制错误的返回。
可以看到,当错误产生后,我们可以通过err.(gvalid.Error)
断言的方式判断错误是否为校验错误,如果是的话则返回第一条校验错误,而不是所有都返回。更详细的错误控制方法,请参考 数据校验-校验结果 章节。
执行后,我们通过工具来测试一下: