【go】gin 项目结构划分与表单数据解析
例如有个handler是
func Register(ctx *gin.Context){// 这里绑定前端传递的json到结构体
}
看了些代码 有些人是在 models目录下创建一个文件 例如 user.go
user.go
type User struct {Id int64
Nickname string
Password string
}
然后Bind的是 &models.User{}
但是这种情况的话 如果模型中不存在的字段就解析不到了 例如 confirm_pwd
第二种代码 另外定义结构体 专门解析表单传递的json数据的
请问下 各位是如何解析表单数据的?
不建议把db的模型和参数的模型混为一谈,第二种比较合适.(虽然会有不小工作量)
当然,这话不是我说的,是架构整洁之道里面提到的。
用gin框架用
c.MustBindWith(req, binding.FormMultipart)
这个接口可以接受form-data的数据,req是一个结构体,每一个字段后要有例如 form:"user" 这样的tag.
一般后台数据库的模型还有很多辅助字段,比如创建时间,修改时间什么的. 而一般请求数据的解析只会使用其中部分较少的字段, 一般而言都是针对每一个处理函数写一个请求与返回的结构体, 因为请求还要加上 验证的 tag. 尽量不要共用
一般数据库模型不和参数模型一致。
因为参数模型可能有不同的tag用于解析,校验。
参数模型一般分为 add,edit,delete。
add和edit可以copy数据库模型,然后单独定制化。
delete参数一般只传递 主键id 。
回答
以上是 【go】gin 项目结构划分与表单数据解析 的全部内容, 来源链接: www.h5w3.com/113547.html