背景
关于web框架 自动绑定和校验 表单参数,在之前的几家公司内部自研web框架都有见过,包括Java和Go的自研框架。
最近使用gin搭建广告服务,也涉及了相关知识点,这里记录一下绑定原理。
Go框架中,主要是依靠解析结构体中的tag进行匹配。
其中主要的难点是:
- 映射难点
1.Go是静态语言,在判断字段类型时,会有很多分支进行判断。
2.对结构体的指针和非指针赋值逻辑不同。
3.POST请求发送的body如果是嵌套的json内容,映射到对应的嵌套结构中需要使用递归算法,实现一个生产级的夹杂着业务的递归算法还是比较繁杂的。
- 校验难点 1.字段有无的校验 2.嵌套字段的校验
其他
PS.本文均未谈及性能问题