zoukankan      html  css  js  c++  java
  • miniKeys——钥匙库项目系列一(项目介绍以及Go项目部署)

    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 & 
    

    这样服务就起来了:

    在这里插入图片描述


    博客网站 https://yamon.top 个人网站 https://yamon.top/resume GitHub网站 https://github.com/yamonc 欢迎前来访问
  • 相关阅读:
    chapter1 Qt入门
    base64加密解密
    vue+CryptoJS+cookie实现保存账号密码
    js计时器
    Elenent ui中的表单校验规则、自定义校验规则、预验证功能
    js获取文件后缀
    js中如何将有字符串转换为数组,或将数组转换为字符串
    vue-router
    Vue项目纯前端导出word文档
    async/await
  • 原文地址:https://www.cnblogs.com/chenyameng/p/14589798.html
Copyright © 2011-2022 走看看