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

原創做者,公衆號【程序員讀書】,歡迎關注公衆號,轉載文章請註明出處哦。git

雖然Go標準庫net/http對使用Go開發Web應用提供很是強大的支持,然而對於想要快速開發並及上線項目的團隊來講,使用Web框架不失爲一種更好的選擇。程序員

Go社區中,有許多很是優秀的Web框架,如Gin,Iris,Echo,Martini,Revel以及國人開發的Beego框架。github

Gin的優勢

  • 快速:基於Radix樹的路由,性能很是強大。
  • 支持中間件:內置許多中間件,如Logger,Gzip,Authorization等。
  • 崩潰恢復:能夠捕捉panic引起的程序崩潰,使Web服務能夠一直運行。
  • JSON驗證:能夠驗證請求中JSON數據格式。
  • 路由分組:支持路由分組(RouteGroup),能夠更方便組織路由。
  • 錯誤管理機制:能夠收集程序中的錯誤
  • 多種數據渲染方式:支持HTMLJSONYAMLXML等數據格式的響應。
  • 擴展性:很是簡單擴展中間件。
  • 數據驗證器:支持數據驗證器且能夠自定義。

安裝與使用

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

直接安裝

$  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命令即可以將包導入。fetch

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

使用gin.Default()方法會返回gin.Engine實例,表示默認路由引擎。spa

r := gin.Default()
複製代碼

經過這種方式建立的gin.Engine,會默認使用Logger和Recovery兩個中間件,能夠用gin.New()方法建立一個不包含任何中間件的默認路由。code

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有所瞭解。

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

相關文章
相關標籤/搜索