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 & 

這樣服務就起來了:

在這裏插入圖片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章