我想實現一個開箱即用的 API 框架的輪子,這個輪子是基於 Gin 基礎上開發的。git
爲何是開箱即用,它會集成哪些功能?github
以上功能點,都是經常使用的,後期可能還會增長。api
廢話很少說,我們開始吧。框架
建立一個項目,我們首先要考慮一個依賴包的管理工具。編輯器
常見的包管理有,dep、go vendor、glide、go modules 等。ide
最開始,使用過 dep,當時被朋友 diss 了,推薦我使用 go modules 。工具
如今來講一下 go modules ,這個是隨着 Go 1.11 的發佈和咱們見面的,這是官方提倡的新的包管理。ui
說一個環境變量:GO111MODULE,默認值爲 auto 。blog
當項目中有 go.mod 時,使用 go modules 管理,反之使用 舊的 GOPATH 和 vendor機制。開發
若是就想使用 go modules ,能夠將 GO111MODULE 設置爲 on 。
直接上手吧。
我們在 GOPATH 以外的地方,新建一個空文件夾 go-gin-api 。
cd go-gin-api && go mod init go-gin-api
輸出:
go: creating new go.mod: module go-gin-api
這時目錄中多一個 go.mod 文件,內容以下:
module go-gin-apigo 1.12
到這,go mod 初始化就完成,接下來添加依賴包 - gin。
在目錄中建立一個 main.go 的文件,放上以下代碼:
package mainimport "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}
這代碼沒什麼特別的,就是官方的入門Demo。
接下來,開始下載依賴包。
go mod tidy
執行完成後,看一下 go.mod 文件:
module go-gin-apigo 1.12require github.com/gin-gonic/gin v1.4.0
這時,看到新增一個 gin v1.4.0 的包。
還生成了一個 go.sum 的文件,這個文件能夠暫時先無論。
這時發現了 2 個問題。
一、目錄中沒發現 gin 包,包下載到哪了?
下載到了 GOPATH/pkg/mod 目錄中。
二、GoLand 編輯器中關於 Gin 的引用變紅了?
在這裏編輯器須要設置一下,如圖:
點擊 Apply 和 OK 便可。
若是這招不靈,還能夠執行:
go mod vendor
這個命令是將項目依賴的包,放到項目的 vendor 目錄中,這確定就能夠了。
go mod tidy
拉取缺乏的模塊,移除不用的模塊。
我經常使用這個命令。
go mod vendor
將依賴複製到vendor下。
我經常使用這個命令。
go mod download
下載依賴包。
go mod verify
檢驗依賴。
go mod graph
打印模塊依賴圖。
其餘命令,能夠執行 go mod ,查看便可。
這篇文章,分享了 go modules 的使用。
使用 go modules 從零搭建一個項目。
GoLand 編輯器使用 go modules。
今天就到這了,下一篇文章開始搭建 API 項目了,寫參數驗證。