对象转换
对象转换在请求处理中非常常见。我们推荐将输入和输出定义为struct
结构体对象,以便于结构化的参数输入输出维护。GF
框架支持非常便捷的对象转换,支持将客户端提交的参数如Query
参数、表单参数、内容参数、JSON/XML
等参数非常便捷地转换为指定的struct
结构体,并且支持提交参数与struct
属性的映射关系维护。
对象转换方法使用Request
对象的Parse
方法或者Get*Struct
方法,具体方法定义请参考API文档: https://godoc.org/github.com/gogf/gf/net/ghttp#Request
参数映射
默认规则
客户端提交的参数如果需要映射到服务端定义的struct
上,可以采用默认的映射关系,这一点非常方便。默认的转换规则如下: 1. struct
中需要匹配的属性必须为公开属性
(首字母大写)。 2. 参数名称会自动按照 不区分大小写
且 忽略-/_/空格
符号 的形式与struct
属性进行匹配。 3. 如果匹配成功,那么将键值赋值给属性,如果无法匹配,那么忽略该键值。
...
由于底层对象转换实现使用的是
gconv
模块,因此也支持c/gconv/json
标签,更详细的规则可以参考请参考【gconv.Struct】章节。
自定义规则
自定义的参数映射规则可以通过为struct
属性绑定tag
实现,tag
名称可以为p/param/params
。例如:
...
其中我们使用了p
标签来指定该属性绑定的参数名称。password1
参数将会映射到Pass1
属性,password2
将会映射到Pass2
属性上。其他属性采用默认的转换规则即可,无需设置tag
。
Parse
转换
从v1.11
版本开始,我们推荐使用Parse
方法来实现struct
的转换,该方法是一个便捷方法,内部会自动进行转换及数据校验,但如果struct
中没有校验tag
的绑定将不会执行校验逻辑。
...