一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天,点击查看活动详情。
写在前面👀
这几天比较忙,就把寒假写的小笔记搬上来了,讲的是用gin-gorm框架实现用户注册和查询信息。
一、和数据库相关操作📦
1.创建表单📄
在Navicat上添加字段🧱
2.数据库连接👩💻
用
init()函数在程序执行前初始数据库🍖
var DB *gorm.DB//全局作用域
func init() {
//连接userinfo这个库
dsn := "root:123456@tcp(127.0.0.1:3306)/userinfo"
DB, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
//错误处理
if err != nil {
log.Println("mysql 连接失败: ", err)
}
二、用户注册信息🚄
1.创建模型结构体🩲
使用标签绑定验证🥽
type User struct {
ID uint
Username string `json:"username" binding:"min=5,max=20,required"` //5-20位用户名
Password string `json:"password" binding:"min=10,max=32,required"` //10-32位密码
Email string `json:"email" binding:"email,required"` //邮箱
Gender uint8 `json:"gender" binding:"gte=1,lte=2,required"` // 男:1, 女:2
Age uint8 `json:"age" binding:"gte=5,lte=100,required"` //5-100岁年龄
}
2.json解析⏳
r.POST("/regist", func(c *gin.Context) {
var user User //创建结构体实例,用来接收数据
//json解析绑定与错误处理
if err := c.ShouldBindJSON(&user); err != nil {
c.JSON(200, gin.H{
"code": 400,
"data": err,
"msg": "register denied", //注册失败
})
return
}
// 写入数据库
DB.Create(&user)
// 返回信息
c.JSON(200, gin.H{
"code": 200,
"data": gin.H{
"username": user.Username,
},
"msg": "register permitted", //注册成功
})
})
3.遇到的问题🎃
Gender bool `json:"gender" binding:"required"` //用bool设置性别不知道为什么会出错
- false会出错
- true却能成功
Gender uint8 `json:"gender" binding:"required"` //然后换了unit8,最终1代表男生,2代表女生
- 试了试,1可以,-1也可以,就0不行😅
三、查询用户信息🏳🌈
r.GET("/regist/:id", func(c *gin.Context) {
uid := c.Param("id") //获取url上输入的id号
var user User //创建结构体实例,用来接收数据
result := DB.Where("ID = ?", uid).First(&user)
//错误处理
if err := result.Error; err != nil {
log.Println("查询失败: ", err)
return
}
//返回用户基本信息
c.JSON(200, gin.H{
"code": 200,
"data": gin.H{
"id": user.ID,
"username": user.Username,
"email": user.Email,
"gender": user.Gender,
"age": user.Age,
},
"msg": "Ok",
})
})
写在后面🍻
感谢观看啦✨
有什么不足,欢迎指出哦💖
掘金的运营同学审核辛苦了💗