本文首发于我的博客:Golang适用的DTO工具,我同时在知乎专栏也发布了同样主题的文章,但是文章脉络更清晰一点(个人感觉),链接由此去知乎版本-Golang适用的DTO工具,逃~
DTO (Data Transfer Object) 是Java中的概念,起到数据封装和隔离的作用。在使用Golang开发Web应用的过程中,也会有类似的需求。先贴项目地址 github.com/yeqown/server-common/tree/master/dbs/tools
举个例子
现在有一个用户数据结构如下,
type UserModel struct {
ID int64 `gorm:"column:id"`
Name string `gorm:"column:name"`
Password string `gorm:"column:password"`
}
// 问题1: 现在要求是想要JSON格式返回用户数据,并且不希望其中包含有Password字段
// 解决1:
type UserModel struct {
ID int64 `gorm:"column:id" json:"id"`
Name string `gorm:"column:name" json:"name"`
Password string `gorm:"column:password" json:"-"`
}
// 问题2: 同样是JSON数据格式,并且希望额外返回用户的身份标示Ident(假设必须要跟用户数据放在一起)
// 解决2: (这也是我的场景)