目录

文章目录

  • 目录
    • 1 介绍
    • 源码下载
    • 2 练习
    • 效果演示
  • 友情支持

1 介绍

Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点

对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错

借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范

源码下载

下载地址

2 练习

本次练习主要实现一个可以实现用户注册的后台。

// main.go
package mainimport ("log""math/rand""net/http""time""github.com/gin-gonic/gin"_ "github.com/go-sql-driver/mysql""github.com/jinzhu/gorm"
)

引入区,导入了本次练习使用到的库。

type User struct {gorm.ModelName      string `gorm:"type:varchar(20);not null"`Telephone string `gorm:"varchar(11);not null"`Password  string `gorm:"size:255"`
}

全局变量区,定义了用户的数据结构,主要是姓名,电话号码和密码。

func main() {//gin.SetMode(gin.ReleaseMode)db := InitDB()defer db.Close()db.AutoMigrate(&User{})r := gin.Default()r.POST("/api/auth/registers", func(ctx *gin.Context) {//获取参数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}//if len(name) == 0 {name = RandomString(10)}log.Println(name, telephone, password)//判断手机号是否存在if IsTelephoneExist(db, telephone) {ctx.JSON(http.StatusUnprocessableEntity,gin.H{"code": 422, "msg": "该用户已经注册"})return}//创建用户newUser := User{Name:      name,Telephone: telephone,Password:  password,}db.Create(&newUser)//返回结果ctx.JSON(200, gin.H{"message": "注册成功",})return})panic(r.Run())fmt.Println("Hello World!")
}

主函数区,整体运行逻辑


func IsTelephoneExist(db *gorm.DB, telephone string) bool {var user Userdb.Where("telephone=?", telephone).First(&user)if user.ID != 0 {return true}return false
}

子函数,判断电话号码是否已经注册

func RandomString(n int) string {var letters = []byte("qwertyuiopasdfghjklxzvbnmQQERTYUOIOPASDFGHJKLZXCVBNM")result := make([]byte, n)rand.Seed(time.Now().Unix())for i := range result {result[i] = letters[rand.Intn(len(letters))]}return string(result)
}

子函数,如果用户没有输入姓名,可以生成随机字符。

func InitDB() *gorm.DB {driverName := "mysql"host := "localhost"port := "3306"database := "test"username := "root"password := ""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("failed to connect database!,err:" + err.Error())}return db
}

子函数,初始化数据库,我的mysql没设置密码,所以密码为空。

效果演示


友情支持

有问题的可以关注公众号,博主会在24小时内回复。

Go 语言框架 Gin 练习1相关推荐

  1. go语言mysql框架_超级详细:Go语言框架Gin和Gorm实现一个完整的待办事项微服务...

    前言 本文通过一步一步的设计,最终实现一个完善的todo应用. 我们使用GO框架Gin用户路由控制和返回数据.使用Gorm用于操作数据库. 读者可根据本教程操作,最终实现列出的各项功能. 技术清单 本 ...

  2. 基于Go语言框架Gin+Xorm搭建的MVC项目

    项目介绍 一款 Go 语言基于Gin.Xorm.Layui.MySQL等框架精心打造的一款模块化.高性能.企业级的敏捷开发框架,本着简化开发.提升开发效率的初衷触发,框架自研了一套个性化的组件,实现了 ...

  3. Go 语言框架 Gin 练习2

    目录 文章目录 目录 1 介绍 2 练习 友情援助 1 介绍 Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点 对于golang而言,web框 ...

  4. Go语言框架Gin之4 安全认证

    安全认证包括cookie.session.token.安全认证中间件等,本节详细讲解安全认证中间件. 1.cookie核心代码: func CookieAuth() gin.HandlerFunc { ...

  5. Go语言web框架 gin

    Go语言web框架 GIN gin是go语言环境下的一个web框架, 它类似于Martini, 官方声称它比Martini有更好的性能, 比Martini快40倍, Ohhhh-.看着不错的样子, 所 ...

  6. Go语言web框架——Gin

    文章目录 Gin 1 Web工作流程 2 Gin 框架 2.1 Hello World engine.Run() 2.2 gin.Engine gin.Default() 2.3 路由与控制器 2.3 ...

  7. Golang 微框架 Gin 简介

    Golang 微框架 Gin 简介 框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了.成长总不会一蹴而就,从写出程序获取成就感,再到精通框 ...

  8. 第22关 go的web框架-gin

    怕什么真理无穷,进一寸有一寸的欢喜. 第22关 go的web框架-gin 22-1 gin的helloworld体验 22-2 使用New和Default初始化路由器的区别 22-3 gin的路由分组 ...

  9. 【架构】技术-工具-平台-语言框架

    技术-工具-平台-语言&框架 Techniques | Technology Radar | ThoughtWorks 转载于:https://www.cnblogs.com/junneyan ...

最新文章

  1. CocoaPods安装与使用
  2. dede问答模块 那个php文件相对重要,DEDE5.7 问答模板的修改技巧
  3. Visual studio 2013安装及单元测试
  4. php cookie赋值使用
  5. 组图:2007最震撼人心的“史上最牛”事件
  6. Springboot集成JavaMailSender发送邮件
  7. python对原数组遍历_Python数组遍历的简单实现方法小结
  8. Pitch Innovations音频插件合集
  9. Qt实践2: 简易计算器
  10. 使用mapboxgl 实现特定的地图效果
  11. GitLab之创建项目组及项目
  12. Python数据可视化-基于Python-matplotlib
  13. 无线路由器实现网络接入
  14. 重要且紧急的事,紧急但不重要的事,重要但不紧急的事,既不紧急又不重要的事
  15. android app wifi密码,无广告查看wifi密码的软件-WiFi密码查看清爽版app下载V999安卓版-西西软件下载...
  16. 重要的表格数据误删了,用EasyRecovery快速恢复!
  17. BaseAdapter 的notifyDataSetInvalidated 和notifyDataSetChanged
  18. 全国计算机一共几集,夏目友人帐第六季一共多少集?至少11集国内已播出
  19. 菜鸟、大牛和教主,三者的区别
  20. Java后端开发常考面试题大全

热门文章

  1. Exploring your Postgraduate Study Options
  2. 剑桥大学中国学联学术部文章
  3. 当我们不为了拿奖,而在做事情的时候
  4. UNITY polygon collider不随物体旋转
  5. Django入门项目实践(中)
  6. 快速部署-01-docker
  7. ArcGIS 10.3 for Server新特性介绍
  8. Serv-u 10.3 的图文安装教程及使用方法
  9. HDU 5531 Rebuild
  10. 太极团队内部邮件曝光:iOS8完美越狱重大突破