Gin(一):Hello Gin

更多文章 狂點 -> ISLANDhtml

什麼是 Gin

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

這是來自 Gin Github 上的描述。github

開發環境

  • GoLand 2019.2 EAP
  • GoLang 1.11.5
  • 採用 Go Modules 進行管理

快速入門

GoLand 新建項目的時候,咱們選擇 Go Modules(vgo) ,填寫咱們的項目地址和項目名稱,咱們命名爲 GinHellogolang

新建項目

點擊 Create ,此時 Goland 爲咱們生成了項目目錄,Go 項目的目錄永遠是那麼的簡單,比 JavaMaven 或者 Gradle 生成的項目目錄簡單多了。web

GinHello
|
|-go.mod
複製代碼

對,就是一個文件 ,一個 Go module 文件。go modGo 官方引入的一個依賴管理工具。瀏覽器

添加依賴

經過 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 ,這是由於咱們的根路由上並無返回任何結果。同時咱們能夠在控制檯上看到一些打印信息,其中就包括咱們剛剛訪問根路由的端口。

產生接口

項目已經啓動了,那麼如何返回一個接口呢?

經過 routerHandle 進行配置咱們返回的參數。

// 省略代碼
	// 添加 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 服務器很簡單,也很方便,零配置便可完成項目並運行起來。

本章節代碼

Github

相關文章
相關標籤/搜索