miniKeys——钥匙库项目系列一(项目介绍以及Go项目部署)

项目介绍:

背景

​ 互联网上需要账号太多太繁琐,对应的密码也就比较多,而且每个网站上面对应的规则也都不同,导致每个人的密码太多,虽然说浏览器在一定程度上可以缓解这个问题,但是如果更换设备就会导致密码全部丢失等问题,而手机端则不会丢失,所以开发出来一套miniKeys来解决这一痛点,目前主要是为了自己使用(确实有点奢侈了,一个这个玩意儿,花了9块钱买了域名[坐等升值],服务器用老早已经买给林楷项目的),这样既可以锻炼自己的代码能力,也可以为简历和github上增添色彩,虽然Go语言也啥也没学会,只是通过几天看了下菜鸟教程,然后就找对应的框架写后端。

初衷&&对Go的一些理解

​ miniKeys说实话,就是主要用来练手和找工作使用的,对Go语言的熟练程度也只能是了解的程度,更谈不上熟悉。大三大四的那时候就听过Go语言,也对挺看好Go语言的前景,但是在写这个项目的时间里,一直处于一种纠结的状态,Go的语法确实有点“别扭”,就这种方法、变量的声明方式就够喝一壶的,然后再加上存在指针,就更不友好了。在判断对象是否为空的时候(什么对象,Go里面只有Struct,曾有人说Go语言是一种面向过程的语言。),不能使用对象==nil判断,你得使用&对象 ==nil判断才行:

password := c.PostForm("password")
fmt.Println(password)
if &password==nil || password=="" {
   c.JSON(http.StatusOK,gin.H{
      "error":"参数错误",
   })
}else{
   user, err := model.GetUserInfo(password)
   if err != nil {
      c.JSON(http.StatusOK, gin.H{"error": err.Error()})
   }else {
      c.JSON(http.StatusOK, user)
   }
}

​ 写Demo的过程中,一度在想我在干什么,感觉写这些的意义不大,当时就一直想用Java写的话多好写,不过不用加分号确实简单好多,就是可读性不太高(在这里只针对Gin框架)。

完成功能

​ miniKeys后端的代码由Go完成,Web框架采用的是Gin框架,数据映射采用Gorm框架,最终完成的功能:

		1. 完成登录验证,不支持微信登录(只支持指定密码,只有我自己知道**:smile:**)
		2. 完成对密码的新增
		3. 完成对密码的更新
		4. 完成对密码的删除
		5. 查看单个密码和所有密码

功能挺简单,就是实现起来比较坎坷,主要的困难点在Go语言不怎么熟悉。

待完善

整个Demo完成下来,还有很多要完善的:

  1. 严格分层,将controller和model等层分的更清晰。
  2. controller里面需要分开,将user相关的和key相关的访问路径分别放在两个controller文件中
  3. 整个项目需要将连接数据库的代码提炼出来,只连接一次而不是访问一次接口连接一下,数据库连接代码重复太多。

部署项目

建议使用本地编译的方式部署到服务器上,另一种是在服务器上编译,它需要在服务器上装Go的环境等,太麻烦了,针对miniKeys这种小型的项目直接本地编译就行。

在main.go的同级目录下输入这些指令就行了:

set GOARCH=amd64
set GOOS=linux
go build main.go

然后会出现main文件,没有任何后缀,然后将main上传到服务器上(记得改端口)。

nohup ./main & 

这样服务就起来了:

在这里插入图片描述


 posted on 2021-03-28 20:20  ben跑的换行符  阅读(79)  评论(0编辑  收藏  举报