gin框架项目重构关注分离

1、基本框架大概

 2、入口执行文件(main.go)

func main() {
   //初始化数据库
   db := commom.InitDB()
   //延时关闭它
   defer db.Close()
   r := gin.Default()
   r.POST("/api/auth/register", controller.Register)
   panic(r.Run())
}

3、数据库文件(database.go)

var DB *gorm.DB

//连接数据库
func InitDB() *gorm.DB {
   driverName := "mysql"
   host := "localhost"
   port := "3306"
   database := "firstgo"
   username := "root"
   password := "001212"
   charset := "utf8"
   args := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=true",
      username,
      password,
      host,
      port,
      database,
      charset,
   )
   db, err := gorm.Open(driverName, args)
   if err != nil {
      panic("filed to connect database,err" + err.Error())
   }
   //自动创建数据表
   db.AutoMigrate(&model.User{})
   DB = db
   return db
}

//获取DB实例
func GetDB() *gorm.DB {
   return DB
}

4、控制器中方法(contrellor)

func Register(c *gin.Context) {
   //获取commom里的DB
   DB := commom.DB
   //fmt.Printf(c.PostForm("name"))
   //获取参数
   name := c.PostForm("name")
   telephone := c.PostForm("telephone")
   password := c.PostForm("password")
   //数据验证
   fmt.Printf(name, telephone, password)
   if len(telephone) != 11 {
      c.JSON(http.StatusUnprocessableEntity, gin.H{"code": 422, "msg": "手机号必须是11位"})
      return
   }
   if len(password) < 6 {
      c.JSON(http.StatusUnprocessableEntity, gin.H{"code": 422, "msg": "密码不能少于6位"})
      return
   }
   //判断手机号是否存在
   if isTelephoneExist(DB, telephone) {
      c.JSON(http.StatusUnprocessableEntity, gin.H{"code": 422, "msg": "手机号已存在"})
      return
   }
   //数据库操作(创建用户)
   newUser := model.User{
      Name:      name,
      Telephone: telephone,
      Password:  password,
   }
   DB.Create(&newUser)
   c.JSON(200, gin.H{
      "msg": "注册成功",
   })
}
func isTelephoneExist(db *gorm.DB, telephone string) bool {
   var user model.User
   db.Where("telephone=?", telephone).First(&user)
   if user.ID != 0 {
      return true
   }
   return false
}

5、模型中(model)

//用户注册结构体
type User struct {
   gorm.Model
   Name      string `gorm:"type:varchar(20);not null"`
   Password  string `gorm:"varchar(110;not null);unique"`
   Telephone string `gorm:"size:255;not null"`
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值