1、初始化DB
2、命名接口
3、获取参数(姓名,密码,手机号为例)
4、参数进行简单的验证(手机号11位+密码大于六位)
5、判断手机号是否存在
6、 用户注册结构体(需要用到的数据)
7、连接数据库
8、数据验证都通过后,在数据添加数据,进行注册操作
9、状态码返回(200)
10、测试是否注册成功
11、注册成功数据库中数据
12、总体代码
//用户注册结构体 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"` } func main() { //获取初始化db db := InitDB() //延时关闭它 defer db.Close() r := gin.Default() r.POST("/api/auth/register", func(c *gin.Context) { //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 := User{ Name: name, Telephone: telephone, Password: password, } db.Create(&newUser) c.JSON(200, gin.H{ "msg": "注册成功", }) }) panic(r.Run()) } func isTelephoneExist(db *gorm.DB, telephone string) bool { var user User db.Where("telephone=?", telephone).First(&user) if user.ID != 0 { return true } return false } //连接数据库 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(&User{}) return db }