安裝go包最快捷的方法是go get,一步到位,但是需要翻牆,取而代之的方法是用git clone直接把需要的包從github拉下來,也很慢,但至少是可行的~
另外,不是吹牛,用本文的方法安裝一次gin,以後想安裝其他的go包,相信你也就都可以自己搞定了,嘿嘿
環境
因爲使用的是git,所以這種安裝方法使用於所有系統(linux,mac,windows),我是在ubuntu上裝的。
在安裝gin之前我的go環境是安裝好了的,如果還沒裝可以參考這篇ubuntu1604安裝go1.13
安裝gin需要很多依賴包,但是不用擔心,缺少的包在安裝過程中會提示的,到時候一個一個裝就好了,下面記錄一下我的安裝全過程。
安裝
首先拉取gin包,注意git clone的路徑,不能錯,如果你以前沒有裝過github上的包,是不會有/github.com這個文件夾的,需要自己先創建一個
cd $GOPATH/src/github.com/
git clone https://github.com/gin-gonic/gin.git
go install github.com/gin-gonic/gin
執行完最後一步,也就是安裝,會報很多錯,如下圖:
可以看到,錯誤全都是因爲缺少必要的包,所以不必擔心,一個一個裝就可以了。也許你缺的包和我的不一樣,也沒有關係,我們完全可以根據提示的包名,來確定git倉庫的url
首先看第一個缺少的包github.com/golang/protobuf/proto,這個對應的git clone url就是:
cd $GOPATH/src/github.com/golang/
git clone https://github.com/golang/protobuf.git
這裏不難看出一點規律了,如果提示缺少的包是“path/package”,那麼你的獲取方式就是下面這樣,注意,path不一定存在,如果不存在,你就手動創建一下~
cd $GOPATH/src/path
git clone https://path/package.git
但這還不夠,你可能會問,爲什麼缺的是protobuf裏的proto,但是要把protobuf拉下來,這是因爲proto並不是一個完整的項目,它是protobuf的一部分,如果你直接拉proto,像下面這樣:
git clone https://github.com/golang/protobuf/proto.git
那麼結果會是這樣的:
正如我所說,proto並不是一個完整的項目,它只是protobuf倉庫的一部分,所以你要拉的是protobuf。
但實際情況是,我們也不知道缺的包到底是一個完整的項目,還是其中的一部分,沒關係,我們可以嘗試,先假設它就是一個完整的包,如果git clone提示不存在,那麼就去安裝它的上一級,這樣試,最後總可以裝上~
歐克,裝完protobuf,我們再試着go install一下:
go install github.com/gin-gonic/gin
這時的報錯是這樣的:
雖然還是缺很多包,但是沒有再提示我們缺少protobuf了,說明我們裝的protobuf包生效了,接下來就是按照上面的方法,繼續安裝其他缺少的包了~
還想提示一點就是,這個方法並不是只適用於github上的包,我們看上圖提示的最後一個缺少的包,是gopkg.in/yaml.v2,並不是github裏的,但是沒關係,方法完全一樣~
cd $GOPATH/src/gopkg.in
git clone https://gopkg.in/yaml.v2.git
歐克,到這裏,所有缺少的包就裝完了,再次執行go install,看看效果:
嗯,沒有再報任何的錯了,到這裏gin就算安裝完成了~
驗證
安裝完之後,可以用一個簡單的小程序驗證一下,在$GOPATH/src路徑下,創建testGin.go,寫入如下代碼:
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run() // listen and serve on 0.0.0.0:8080
}
然後run起來:
前面有一些warning,無所謂,重點是最後一行,程序已經在監聽8080端口,說明一個web服務已經起來,接下來,在本機上,調用我們測試demo裏寫的ping接口:
curl 127.0.0.1:8080/ping
你會發現,收到了你程序裏寫好的回覆~
歐克,到這裏,gin框架的驗證就完成了,可以發現,真的非常簡單,接下來你就可以繼續去豐富你的接口,使用gin框架寫出一個功能豐富的web後端程序啦~