Gin(一):Hello Gin ,學習 Gin 從這裡開始

Gin(一):Hello Gin ,學習 Gin 從這裡開始

什麼是Gin

Gin 是一個用 Golang 寫的 http web 框架。

這是來自 Gin Github 上的描述。

開發環境

GoLand 2019。2 EAP

GoLang 1。11。5

採用 Go Modules 進行管理

快速入門

用 GoLand 新建專案的時候,我們選擇 Go Modules(vgo) ,填寫我們的專案地址和專案名稱,我們命名為 GinHello 。

Gin(一):Hello Gin ,學習 Gin 從這裡開始

點選 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配置這個神器,再也不用寫介面文件了