Gin
Gin是一個golang的微框架,封裝比較優雅,API友好,源碼注釋比較明確,已經發布了1.0版本。具有快速靈活,容錯方便等特點。其實對于golang而言,web框架的依賴要遠比Python,Java之類的要小。自身的net/http足夠簡單,性能也非常不錯。框架更像是一些常用函數或者工具的集合。借助框架開發,不僅可以省去很多常用的封裝帶來的時間,也有助于團隊的編碼風格和形成規范。
下面就Gin的用法做一個簡單的介紹。
首先需要安裝,安裝比較簡單,使用go get即可
go?get?github.com/gin-gonic/gin
遇到需要權限使用命令
env?GIT_SSL_NO_VERIFY=true?go?get?github.com/gin-gonic/gin
Hello World
使用Gin實現Hello world非常簡單,創建一個router,然后使用其Run的方法:
import?(
"github.com/gin-gonic/gin"
"net/http"
)
func?main(){
r?:=?gin.Default()
r.GET("/",?func(c?*gin.Context)?{
c.String(http.StatusOK,?"Hello?World")
})
r.Run(":8080")
}
簡單幾行代碼,就能實現一個web服務。使用gin的Default方法創建一個路由handler。然后通過HTTP方法綁定路由規則和路由函數。不同于net/http庫的路由函數,gin進行了封裝,把request和response都封裝到gin.Context的上下文環境。最后是啟動路由的Run方法監聽端口。當然,除了GET方法,gin也支持POST,PUT,DELETE,OPTION等常用的restful方法。
restful路由
gin的路由來自httprouter庫。因此httprouter具有的功能,gin也具有,不過gin不支持路由正則表達式:
func?main(){
r?:=?gin.Default()
r.GET("/user/:name",?func(c?*gin.Context)?{
name?:=?c.Param("name")
c.String(http.StatusOK,?"Hello?%s",?name)
})
}