实现用户注册
go mod init main //生成go.mod
go get -u github.com/gin-gonic/gin//生成go.sum
简单示例
func main(){
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
}) //修改其为用户注册
panic(r.Run())
}
go run main.go
未连接数据库的演示版本
func main() {
r := gin.Default()
r.POST("/api/auth/register", func(ctx *gin.Context) { //relativePath
//获取参数
name := ctx.PostForm("name")
telephone := ctx.PostForm("telephone")
password := ctx.PostForm("password")
//数据验证
if len(telephone) != 11 {
ctx.JSON(http.StatusUnprocessableEntity, gin.H{"code": 422, "msg": "手机号必须11位"})
return
}
if len(password) < 6 {
ctx.JSON(http.StatusUnprocessableEntity, gin.H{"code": 422, "msg": "密码不少于6位"})
return
}
//如果名称没有传,给一个10位的随机字符串
if len(name) == 0 {
name = RandomString(10)
}
log.Println(name, telephone, password) //简单实例
//判断手机号是否存在--查库
//创建用户--写库
//返回结果
ctx.JSON(200, gin.H{
"msg": "注册成功",
})
})
/*
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
}) //修改其为用户注册 */
panic(r.Run())
}
func RandomString(n int) string {
var letters = []byte("asdfgjklzxcvbnmqwertyuiopASDFGHJKLZXCVBNMQWERTYUIOP")
result := make([]byte, n)
rand.Seed(time.Now().Unix())
for i := range result {
result[i] = letters[rand.Intn(len(letters))]
}
return string(result)
}
连接数据库
go get -u github.com/jinzhu/gorm
go get github.com/go-sql-driver/mysql
连接mysql:在该包前加入下划线_,因为加入下划线表示只执行该库的 init 函数而不对其它导出对象进行真正地导入。因为 Go 语言的数据库驱动都会在 init 函数中注册自己,所以我们只需要加入下划线导入即可。
_ "github.com/go-sql-driver/mysql"
//转自:https://blog.csdn.net/qq_45701131/article/details/113838090
抽奖
type lotteryController struct {
Ctx iris.Context//上下文是服务器用于所有客户端的中间人 "对象"
}
上下文是服务器用于所有客户端的中间人 “对象”。对于每一个新的连接,会从 sync.Pool 中获取一个新上下文对象。上下文是 iris 的 http 流中最重要的部分。开发者发送响应到客户端的请求通过一个上下文。开发者获取请求信息从客户端的请求上下文中。
log
首先是golang自带的package log。使用godoc查看,godoc -http=:8001,然后就可以在localhost:8001/pkg/log就可以查看了。
logger是log的一个简单封装
log.New()函数原型
func New(out io.Writer, prefix string, flag int) *Logger//输出,前缀,内容
rand生成随机数
func luckyCode() int32 {
seed := time.Now().UnixNano() // rand内部运算的随机数
code := rand.New(rand.NewSource(seed)).Int31n(int32(rateMax)) // rand计算得到的随机数
return code
}//1-9999