Go 语言web 框架 Gin 练习3
生活随笔
收集整理的這篇文章主要介紹了
Go 语言web 框架 Gin 练习3
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
文章目錄
- 1 介紹
- 2 練習(xí)
- 友情援助
1 介紹
Gin是一個(gè)golang的微框架,封裝比較優(yōu)雅,API友好,源碼注釋比較明確,具有快速靈活,容錯(cuò)方便等特點(diǎn)
對于golang而言,web框架的依賴要遠(yuǎn)比Python,Java之類的要小。自身的net/http足夠簡單,性能也非常不錯(cuò)
借助框架開發(fā),不僅可以省去很多常用的封裝帶來的時(shí)間,也有助于團(tuán)隊(duì)的編碼風(fēng)格和形成規(guī)范.
2 練習(xí)
本次練習(xí)主要在上一次代碼的基礎(chǔ)上進(jìn)行了進(jìn)一步的優(yōu)化,
加入了注冊接口。
添加了
r.POST("/api/auth/login", Controller.Login)具體實(shí)現(xiàn)函數(shù)如下,
func Login(ctx *gin.Context) {//獲取參數(shù)DB := common.GetDB()telephone := ctx.PostForm("telephone")password := ctx.PostForm("password")//數(shù)據(jù)驗(yàn)證if len(telephone) != 11 {ctx.JSON(http.StatusUnprocessableEntity,gin.H{"code": 422, "msg": "手機(jī)號必須為11位"})return}if len(password) < 6 || len(password) > 11 {ctx.JSON(http.StatusUnprocessableEntity,gin.H{"code": 422, "msg": "密碼必須大于6位且小于11位"})return}//手機(jī)號判斷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": "密碼錯(cuò)誤"})return}//發(fā)放tokentoken := "11"//返回結(jié)果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": "加密錯(cuò)誤"})return}//創(chuàng)建用戶newUser := Model.User{Name: name,Telephone: telephone,Password: string(hashPD),}db.Create(&newUser)對存儲(chǔ)的密碼進(jìn)行了加密,而不是直接使用用戶的明文密碼。
友情援助
有問題的可以關(guān)注公眾號,博主會(huì)在24小時(shí)內(nèi)回復(fù)。
總結(jié)
以上是生活随笔為你收集整理的Go 语言web 框架 Gin 练习3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML跳转为啥会404,为什么网页会出
- 下一篇: DLL库链接