参数检查 - meetbill/chi GitHub Wiki

参数检查

https://segmentfault.com/a/1190000023725115

1 常见问题

1.1 为什么 gin 的配置中使用的 binding,而 validator 库中使用的 validate

gin 中使用的 validator 是 v8 版本,v8 与 v9 版本区别比较大。
其中一个区别是v8版本没有指定默认的 TagName,需要在每次声明 validator 实例的时候配置;
在v9中设置了默认的 TagName 就是validate。

gin 框架在使用的时候设置的TagName为”binding”。

code(gin/binding/default_validator.go)

func (v *defaultValidator) lazyinit() {
	v.once.Do(func() {
		v.validate = validator.New()
		v.validate.SetTagName("binding")
	})
}

1.2 required

required 表示字段必须有值,并且不为默认值,例如bool默认值为false、string默认值为””、int默认值为0。

1.3 URL 参数及 body 参数检查

Gin 验证URL中参数使用 tag为“form”
Gin 验证POST 请求体中参数使用 tag为“json”