什麼是Gin
Gin 是一個用 Golang 寫的 http web 框架。
這是來自 Gin Github 上的描述。
開發環境
GoLand 2019。2 EAP
GoLang 1。11。5
採用 Go Modules 進行管理
快速入門
用 GoLand 新建專案的時候,我們選擇 Go Modules(vgo) ,填寫我們的專案地址和專案名稱,我們命名為 GinHello 。
點選 Create ,此時 Goland 為我們生成了專案目錄,Go 專案的目錄永遠是那麼的簡單,比 Java 的 Maven 或者 Gradle 生成的專案目錄簡單多了。
GinHello | |-go。mod
對,就是一個檔案 ,一個 Go module 檔案。go mod 是 Go 官方引入的一個依賴管理工具。
新增依賴
透過 go mod 檔案進行依賴的。
require github。com/gin-gonic/gin v1。4。0
我們把上面的依賴進行新增到 go module 中, goLand 會自動幫我們進行依賴的下載和管理。
Hello Gin
當完成依賴的新增,就可以開始寫程式碼了。
新建一個 main。go 檔案。
package main import ( “github。com/gin-gonic/gin” ) func main() { router := gin。Default() router。Run() }
Gin 只需要兩行程式碼就可以把我們的服務跑起來。
我們只要點選執行,專案便會啟動一個 8080 埠,開啟瀏覽器 localhost:8080 我們便可以看到頁面上提示出 404 page not found ,這是因為我們的根路由上並沒有返回任何結果。同時我們可以在控制檯上看到一些列印資訊,其中就包括我們剛剛訪問根路由的埠。
產生介面
專案已經啟動了,那麼如何返回一個介面呢?
透過 router 的 Handle 進行配置我們返回的引數。
// 省略程式碼 // 新增 Get 請求路由 router。GET(“/”, func(context *gin。Context) { context。String(http。StatusOK, “hello gin”) }) // 省略程式碼
此時我們重啟專案,重新訪問頁面 localhost:808,此刻的頁面上已經顯示了 hello gin。
同樣,我們還可以進行 POST,PUT,DELETE等請求方式。
單元測試
單元測試是專案不能缺少的模組,也是保障專案可以正常執行的重要依賴。下面就對Gin 進行單元測試。
為了方便單元測試,我們首先要對我們的專案進行一下抽取。
新建立一個資料夾叫做 initRouter
建立 go 檔案 initRouter。go
package initRouter import ( “github。com/gin-gonic/gin” “net/http” ) func SetupRouter() *gin。Engine { router := gin。Default() // 新增 Get 請求路由 router。GET(“/”, func(context *gin。Context) { context。String(http。StatusOK, “hello gin”) }) return router }
同時修改 main。go
package main import ( “GinHello/initRouter” ) func main() { router := initRouter。SetupRouter() _ = router。Run() }
完成了專案測試的初步建立。
建立 test 目錄, golang 的單元測試都是以 _test 結尾,建立 index_test。go 檔案。
package test import ( “GinHello/initRouter” “github。com/stretchr/testify/assert” “net/http” “net/http/httptest” “testing” ) func TestIndexGetRouter(t *testing。T) { router := initRouter。SetupRouter() w := httptest。NewRecorder() req, _ := http。NewRequest(http。MethodGet, “/”, nil) router。ServeHTTP(w, req) assert。Equal(t, http。StatusOK, w。Code) assert。Equal(t, “hello gin”, w。Body。String()) }
透過 assert 進行斷言,來判斷返回狀態碼和返回值是否與程式碼中的值一致。
此時的專案目錄為:
GinHello | |-initRouter | |-initRouter。go | |-test | |-index_test。go | |-main。go |-go。mod |-go。sum
執行單元測試,控制檯打印出單元測試結果。
——- PASS: TestIndexGetRouter (0。02s)
PASS
✍總結
透過簡單的搭建一個 Gin 專案,可以看到 Go 語言搭建一個 Http 伺服器很簡單,也很方便,零配置即可完成專案並執行起來。
本章節程式碼
Github 點選瞭解更多檢視程式碼
推薦閱讀
Gin(一):Hello Gin ,學習 Gin 從這裡開始
Gin(二):路由Router ,go語言框架學習
Gin(三):與模板配合使用 tmpl,go web 開發最火框架之一
Gin(四):接收表單資料和模型繫結,Go語言最火web框架之一
Gin(五):連線MySQL , Go 輕量級框架 Gin
Gin(六):檔案的上傳,go語言最火框架之一
Gin(七):中介軟體的介紹和使用,GO語言最火的框架之一
Gin(八):cookies使用「不做標題黨,讓你看後有所收穫」
Gin(九):生成restful 介面,go語言最火web框架之一
Gin(十): 整合 Swagger,Gin配置這個神器,再也不用寫介面文件了