更多文章 狂點 -> ISLANDhtml
Gin 是一個用 Golang 寫的 http web 框架。git
這是來自 Gin Github 上的描述。github
用 GoLand
新建項目的時候,咱們選擇 Go Modules(vgo)
,填寫咱們的項目地址和項目名稱,咱們命名爲 GinHello
。golang
點擊 Create
,此時 Goland
爲咱們生成了項目目錄,Go
項目的目錄永遠是那麼的簡單,比 Java
的 Maven
或者 Gradle
生成的項目目錄簡單多了。web
GinHello
|
|-go.mod
複製代碼
對,就是一個文件 ,一個 Go module
文件。go mod
是 Go
官方引入的一個依賴管理工具。瀏覽器
經過 go mod
文件進行依賴的。服務器
require github.com/gin-gonic/gin v1.4.0
框架
咱們把上面的依賴進行添加到 go module
中, goLand
會自動幫咱們進行依賴的下載和管理。工具
當完成依賴的添加,就能夠開始寫代碼了。單元測試
新建一個 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 請求路由
r.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 服務器很簡單,也很方便,零配置便可完成項目並運行起來。