之前学习了使用Gin框架的Engine的默认路由功能解析HTTP请求。现在我们来学习gin框架的参数绑定操作和请求结果返回格式。
处理POST请求时,使用context.PostForm或者context.DefaultPostForm获取客户端表单提交的数据。
像上述这种只有username和password两个字段的表单数据进行提交时,可以使用context.PostForm 和context.GetPostForm获取。
但是如果表单数据较多时,使用PostForm和GetPostForm一次获取一个表单数据,开发效率较慢。
在实际的开发过程当中,往往会面对非常复杂的业务逻辑,比如提交某个数据的时候,需要很多的字段,很多的属性,比如提交用户注册表单,需要用户名注册密码,身份证信息,手机号,昵称等等。如果还是使用上面这种方式获取字段属性,这样就显得效率有些低了。
Gin框架提供给开发者表单实体绑定的功能,可以将表单数据与结构体绑定。(其实也就是将表单提交的数据直接映射为结构体实体)
表单实体绑定
使用PostForm这种单个获取属性和字段的方式,代码量较多,需要一个一个属性进行获取。而表单数据的提交,往往对应着完整的数据结构体定义,其中对应着表单的输入项。gin框架提供了数据结构体和表单提交数据绑定的功能,提高表单数据获取的效率。如下所示:
以一个用户注册功能来进行讲解表单实体绑定操作。用户注册需要提交表单数据,假设注册时表单数据包含三项,分别为:username、phone和password。
创建了UserReglster结构体用于接收表单数据,通过tag标签的方式设置每个字段对应的form表单中的属性名,通过binding属于设置属性是否是必须。
结构体里面的属性对应我们提交表单里面的哪些字段?通过后面的tag标签来设定。这里面有form的属性,这个表示要对应到http请求当中表单当中的哪一个字段。
可以看到Username对应的是表单当中的username字段。
下面是三种表单实体绑定的方式,分别是get请求方式,其次是post请求方式。在post请求方式里面讲两种,其中一种是mutiform格式,其次是json格式。
(1)get请求表单数据提交和服务端具体结构体的定义相应绑定操作
(2)post请求shouldbind方法 表单提交
(3)处理json格式的数据
目前很多的团队都是使用json格式来进行开发的,提交数据的时候是使用json格式提交,返回也是使用json格式进行返回。
提交时候注意:提交的数据类型和服务器端定义的结构体字段类型保持一致,否则会报错。
上面就是全部对客户端提交数据的解析过程