gin-gorm小作业

292 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天,点击查看活动详情

写在前面👀

这几天比较忙,就把寒假写的小笔记搬上来了,讲的是用gin-gorm框架实现用户注册和查询信息。 img

一、和数据库相关操作📦

1.创建表单📄

Navicat上添加字段🧱

image-20220114113446406

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会出错

image-20220113210745146

  • true却能成功

image-20220113210751306

Gender   uint8   `json:"gender" binding:"required"`    //然后换了unit8,最终1代表男生,2代表女生
  • 试了试,1可以,-1也可以,就0不行😅

image-20220113212614777

三、查询用户信息🏳‍🌈

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",
    })
})

写在后面🍻

感谢观看啦✨
有什么不足,欢迎指出哦💖
掘金的运营同学审核辛苦了💗