【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

回到顶部