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数据的

请问下 各位是如何解析表单数据的?

阅读 3.8k
4 个回答

不建议把db的模型和参数的模型混为一谈,第二种比较合适.(虽然会有不小工作量)

当然,这话不是我说的,是架构整洁之道里面提到的。

新手上路,请多包涵

用gin框架用

c.MustBindWith(req, binding.FormMultipart)

这个接口可以接受form-data的数据,req是一个结构体,每一个字段后要有例如 form:"user" 这样的tag.

一般后台数据库的模型还有很多辅助字段,比如创建时间,修改时间什么的. 而一般请求数据的解析只会使用其中部分较少的字段, 一般而言都是针对每一个处理函数写一个请求与返回的结构体, 因为请求还要加上 验证的 tag. 尽量不要共用

一般数据库模型不和参数模型一致。

因为参数模型可能有不同的tag用于解析,校验。

参数模型一般分为 add,edit,delete。

add和edit可以copy数据库模型,然后单独定制化。

delete参数一般只传递 主键id 。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题