Go Web輕量級框架Gin學習系列:安裝與使用

張君鴻發表於2019-04-15

原創作者,公眾號【程式設計師讀書】,歡迎關注公眾號,轉載文章請註明出處哦。

雖然Go標準庫net/http對使用Go開發Web應用提供非常強大的支援,然而對於想要快速開發並及上線專案的團隊來說,使用Web框架不失為一種更好的選擇。

Go社群中,有許多非常優秀的Web框架,如Gin,Iris,Echo,Martini,Revel以及國人開發的Beego框架。

Gin的優點

  • 快速:基於Radix樹的路由,效能非常強大。
  • 支援中介軟體:內建許多中介軟體,如Logger,Gzip,Authorization等。
  • 崩潰恢復:可以捕捉panic引發的程式崩潰,使Web服務可以一直執行。
  • JSON驗證:可以驗證請求中JSON資料格式。
  • 路由分組:支援路由分組(RouteGroup),可以更方便組織路由。
  • 錯誤管理機制:可以收集程式中的錯誤
  • 多種資料渲染方式:支援HTMLJSONYAMLXML等資料格式的響應。
  • 擴充套件性:非常簡單擴充套件中介軟體。
  • 資料驗證器:支援資料驗證器且可以自定義。

安裝與使用

Gin目前最新的版本是V1.3.0,其安裝過程非常簡單,不過在安裝Gin之前,需要安裝Go1.6或以上的版本(後續版本可能要Go1.8或以上),下面介紹兩種安裝方式。

直接安裝

$  go get -u github.com/gin-gonic/gin //使用-u安裝最新版本
複製程式碼

使用Govendor安裝

提示:Govendor是使用Go語言開發Go專案依賴管理工具。

  1. 安裝Govendor
$ go get github.com/kardianos/govendor
複製程式碼
  1. 安裝Gin
$ govendor init
$ govendor fetch github.com/gin-gonic/gin@v1.3
複製程式碼

簡單示例

通過上面的兩種方式安裝好Gin之後,下面通過一個簡單示例看看怎麼Gin使用開發Web應用。

import "github.com/gin-gonic/gin"
func main(){
    r := gin.Default()
    r.GET("/test",func(c *gin.Context){
        c.JSON(200,gin.H{"hello":"world"})
    })
    r.Run()
}
複製程式碼

可以看到,使用gin開發一個Web服務是很簡單的一件事情,可以簡單地分解為四步:

1. 匯入gin包

在我們安裝Gin框架的時候,已經將gin包安裝到本地,如果使用go get命令安裝的,則這個包路徑為$GOPATH/src/github.com/gin-gonic/gin,而我們只需要使用import命令便可以將包匯入。

import "github.com/gin-gonic/gin"
複製程式碼
2. 建立路由

使用gin.Default()方法會返回gin.Engine例項,表示預設路由引擎。

r := gin.Default()
複製程式碼

通過這種方式建立的gin.Engine,會預設使用Logger和Recovery兩個中介軟體,可以用gin.New()方法建立一個不包含任何中介軟體的預設路由。

r := gin.New()
複製程式碼
3. 定義處理HTTP的方法

通過預設路由,我們可以建立處理HTTP請求的方法,示例中使用GET方法:

r.GET("/test",func(c *gin.Context){
    c.JSON(200,gin.H{"hello":"world"})
})
複製程式碼

Gin支援所有通用的HTTP請求方法:GET,POST,PUT,PATCH,OPTIONS,HEAD,DELETE,其使用方式與上面例子相同,如POST:

r.POST("/test",func(c *gin.Context){
    c.JSON(200,gin.H{"hello":"world"})
})
複製程式碼

每種方法都只處理對應的HTTP請求,使用Any方法則可以處理任何的HTTP請求。

r.Any("/test",func(c *gin.Context){
    c.JSON(200,gin.H{"hello":"world"})
})
複製程式碼
4. 監聽埠

定義好請求之後,使用Run()方法便可監聽埠,開始接受HTTP請求,如果Run()方法沒有傳入引數的話,則預設監聽的埠是8080。

r.Run() //r.Run(":3000")
複製程式碼

小結

Gin是一個Go Web開發的輕量級框架,使用也非常地簡單,容易上手,但是,使用Gin開發前,還是需要對Go原生支援的net/http有所瞭解。

你的關注,是我寫作路上最大的鼓勵!

Go Web輕量級框架Gin學習系列:安裝與使用

相關文章