今日任务
今日内容
tag
反引号括起来的就是tag,有gorm和json两种类型
gorm tag的作用是将go结构体数据对应映射数据库表的对应列数据,控制的是数据库层面的定义与行为(后端数据与数据库数据的翻译官)
这里不想json:"username"有对应的名字是因为gorm会自动通过“Username” 蛇形转化成user_name,与数据库字段匹配,因为数据库最初就是通过蛇形转化定义的字段名所以不存在匹配不了的情况,
json tag就是前端json数据和后端结构体之间的字段对应处理,处理的是网络传输层面的数据格式(前端数据与后端数剧之前的翻译官)
这是gorm标签中定义的一些对插入数据库数据的一些限制或者保障
-
type:varvhar(50) 规定最大字符长度
-
uniqueIndex 规定(用户名)唯一
-
not null 规定用户名不能为空
4.default:'user',没值时给默认值(保障)
注意gorm tag 和json tag 作用是双向的也就是可能前端—>后端 json tag会用到,后端的数据返回给前端 json tag也会用到
PasswordHash
这里重点讲一下密码哈希中的 json:"-"`
首先要声明也就是双向传递数据
这里的意思就是1.后端如果接收到前端的数据意外有PasswordHash字样,就不会显示
2.比如用户想要查看一下自己的资料信息,那么后端返回的前端数据中这个字段的值永远不会出现在输出的json中
结构体
这里还有两个注册结构体和登录结构体
Gin框架的bindng:"required"这里类似gorm 的not null ,就是必须填写的意思,不然就会返回前端错误(前端在注册或登录)
这里jwt token 类似理解为一张加密的、可自解释的“数字身份证” 。
- 服务器生成后发给客户端,客户端后续请求时携带此令牌,服务器无需查数据库即可解密并验证用户身份,是一种无状态的认证方式。
您截图中返回的 Token就是一个 JWT 字符串。
练习
1.自己定义一个带 gorm tag 和 json tag 的 struct
2. JSON序列化看看 json:"-" 的效果
可以看到PasswordHash没有返回值