目录

文章目录

  • 1 介绍
  • 2 练习
    • 友情援助

1 介绍

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

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

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

2 练习

本次练习主要在上一次代码的基础上进行了进一步的优化,
加入了注册接口。

func CollectRouter(r *gin.Engine) *gin.Engine {r.POST("/api/auth/register", Controller.Register)r.POST("/api/auth/login", Controller.Login)return r
}

添加了

r.POST("/api/auth/login", Controller.Login)

具体实现函数如下,


func Login(ctx *gin.Context) {//获取参数DB := common.GetDB()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 || len(password) > 11 {ctx.JSON(http.StatusUnprocessableEntity,gin.H{"code": 422, "msg": "密码必须大于6位且小于11位"})return}//手机号判断var user Model.UserDB.Where("telephone=?", telephone).First(&user)if user.ID == 0 {ctx.JSON(http.StatusUnprocessableEntity, gin.H{"code": 422,"msg":  "用户不存在"})return}//判断密码正确?if err := bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password)); err != nil {ctx.JSON(http.StatusBadRequest, gin.H{"code": 400, "msg": "密码错误"})return}//发放tokentoken := "11"//返回结果ctx.JSON(200, gin.H{"code": 200,"data": gin.H{"token": token},"msg":  "登陆成功",})}

额外增加的还有

//密码加密hashPD, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)if err != nil {ctx.JSON(http.StatusInternalServerError,gin.H{"code": 500, "msg": "加密错误"})return}//创建用户newUser := Model.User{Name:      name,Telephone: telephone,Password:  string(hashPD),}db.Create(&newUser)

对存储的密码进行了加密,而不是直接使用用户的明文密码。

友情援助

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

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

  1. Go语言web框架 gin

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

  2. Go语言web框架——Gin

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

  3. Go 语言web 框架 Gin 练习8

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

  4. Go 语言web 框架 Gin 练习 7

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

  5. Go 语言web 框架 Gin 练习6

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

  6. Go 语言web 框架 Gin 练习5

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

  7. Go 语言web 框架 Gin 练习4

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

  8. 干货分享:六个知名的Go语言web框架

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

  9. go web框架_干货分享:六个知名的Go语言web框架

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

最新文章

  1. centos6.4安装java,CentOS6.4下YUM安装MySQL和JDK和Tomcat
  2. 为什么C++(感谢waterwalk翻译)
  3. reuse project css less path folder hierarchy issue
  4. Python中出现“TabError: inconsistent use of tabs and spaces in indentation”
  5. android之统一字体大小
  6. Hibernate 中 set 里的属性及定义
  7. MySQL数据库的主键和外键详解
  8. XCap for Mac(数位显微镜助手)
  9. 华南金牌x79支持服务器内存吗,迟来的评测:华南 金牌X79 主板,值不值得买?...
  10. 数学建模常见算法:插值算法
  11. java实现与图灵机器人聊天_调用图灵机器人API实现简单聊天
  12. ssh-hostbased配置方法
  13. python 批量替换当前.txt文本内容
  14. JavaScript (一) js的介绍及基本语法变量
  15. 【Docker之Swarm详细讲解Swarm集群搭建管理节点工作节点Raft一致性协议overlay网络Docker结合Swarm部署WordPress个人博客实战】
  16. 最短路及最短路计数(SPFA)
  17. win8服务器防火墙配置文件,Win8自带防火墙吗,Win8防火墙在哪里(适用于Win8.1)?
  18. 路由器与交换机(笑傲江湖篇)
  19. 哪些是不被授予专利权的客体
  20. 技巧:win10的另一种美化字体的方式,使用noMeiryoUI

热门文章

  1. formal method 2月23日第八课的内容!schema calculus!
  2. string与stringBuilder的效率与内存占用实测
  3. 客户端码农学习ML —— Numpy基本用法
  4. omct问题之-webapps下多出的ROOT目录
  5. 系统、网络运维好帮手:expect
  6. 解决linux下内网域名的ping结果和nslookup结果不一致
  7. C#SetWindowPos窗口置顶
  8. 一个简单文本处理问题的多种解法
  9. Struts2 自定义拦截器(方法拦截器)
  10. (转)刘汝佳书上出现的一些题目