Gin Web Framework
Gin是一個使用Go語言編寫的Web框架。它具有類似martini的API,並且由於使用了httprouter,性能高出40倍。如果您需要高性能和良好的生產力,您會喜歡上Gin。
Gin的主要特點包括:
- 零分配路由器
- 快速
- 中間件支持
- 無崩潰
- JSON驗證
- 路由分組
- 錯誤管理
- 內置渲染
- 可擴展
入門指南
先決條件
獲取Gin
使用Go模塊支持,只需將以下import添加到您的代碼中
import "github.com/gin-gonic/gin"
然後運行 go [build|run|test]
,將自動提取必要的依賴。
否則,運行以下Go命令安裝gin
套件:
sh
$ go get -u github.com/gin-gonic/gin
運行Gin
首先您需要導入Gin套件以使用Gin,下面是一個最簡單的示例 example.go
:
go
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
})
r.Run() // 監聽並在0.0.0.0:8080上提供服務 (對於Windows為 "localhost:8080")
}
然後使用以下Go命令運行示例:
sh
# 運行 example.go 並在瀏覽器上訪問 0.0.0.0:8080/ping
$ go run example.go
學習更多示例
示例
Gin examples 倉庫中有許多準備好的示例,展示了Gin的各種用例。
文檔
請參閱API文檔和描述 以獲取套件信息。
所有文檔都可在Gin網站上找到。
關於Gin的文章
一個精選的Gin框架優秀文章列表。
基準測試
Gin使用了HttpRouter的自定義版本。
基準測試名稱 | (1) | (2) | (3) | (4) |
---|---|---|---|---|
BenchmarkGin_GithubAll | 43550 | 27364 ns/op | 0 B/op | 0 allocs/op |
BenchmarkAce_GithubAll | 40543 | 29670 ns/op | 0 B/op | 0 allocs/op |
BenchmarkAero_GithubAll | 57632 | 20648 ns/op | 0 B/op | 0 allocs/op |
BenchmarkBear_GithubAll | 9234 | 216179 ns/op | 86448 B/op | 943 allocs/op |
BenchmarkBeego_GithubAll | 7407 | 243496 ns/op | 71456 B/op | 609 allocs/op |
BenchmarkBone_GithubAll | 420 | 2922835 ns/op | 720160 B/op | 8620 allocs/op |
BenchmarkChi_GithubAll | 7620 | 238331 ns/op | 87696 B/op | 609 allocs/op |
BenchmarkDenco_GithubAll | 18355 | 64494 ns/op | 20224 B/op | 167 allocs/op |
BenchmarkEcho_GithubAll | 31251 | 38479 ns/op | 0 B/op | 0 allocs/op |
BenchmarkGocraftWeb_GithubAll | 4117 | 300062 ns/op | 131656 B/op | 1686 allocs/op |
BenchmarkGoji_GithubAll | 3274 | 416158 ns/op | 56112 B/op | 334 allocs/op |
BenchmarkGojiv2_GithubAll | 1402 | 870518 ns/op | 352720 B/op | 4321 allocs/op |
BenchmarkGoJsonRest_GithubAll | 2976 | 401507 ns/op | 134371 B/op | 2737 allocs/op |
BenchmarkGoRestful_GithubAll | 410 | 2913158 ns/op | 910144 B/op | 2938 allocs/op |
BenchmarkGorillaMux_GithubAll | 346 | 3384987 ns/op | 251650 B/op | 1994 allocs/op |
BenchmarkGowwwRouter_GithubAll | 10000 | 143025 ns/op | 72144 B/op | 501 allocs/op |
BenchmarkHttpRouter_GithubAll | 55938 | 21360 ns/op | 0 B/op | 0 allocs/op |
BenchmarkHttpTreeMux_GithubAll | 10000 | 153944 ns/op | 65856 B/op | 671 allocs/op |
BenchmarkKocha_GithubAll | 10000 | 106315 ns/op | 23304 B/op | 843 allocs/op |
BenchmarkLARS_GithubAll | 47779 | 25084 ns/op | 0 B/op | 0 allocs/op |
BenchmarkMacaron_GithubAll | 3266 | 371907 ns/op | 149409 B/op | 1624 allocs/op |
BenchmarkMartini_GithubAll | 331 | 3444706 ns/op | 226551 B/op | 2325 allocs/op |
BenchmarkPat_GithubAll | 273 | 4381818 ns/op | 1483152 B/op | 26963 allocs/op |
BenchmarkPossum_GithubAll | 10000 | 164367 ns/op | 84448 B/op | 609 allocs/op |
BenchmarkR2router_GithubAll | 10000 | 160220 ns/op | 77328 B/op | 979 allocs/op |
BenchmarkRivet_GithubAll | 14625 | 82453 ns/op | 16272 B/op | 167 allocs/op |
BenchmarkTango_GithubAll | 6255 | 279611 ns/op | 63826 B/op | 1618 allocs/op |
BenchmarkTigerTonic_GithubAll | 2008 | 687874 ns/op | 193856 B/op | 4474 allocs/op |
BenchmarkTraffic_GithubAll | 355 | 3478508 ns/op | 820744 B/op | 14114 allocs/op |
BenchmarkVulcan_GithubAll | 6885 | 193333 ns/op | 19894 B/op | 609 allocs/op |
- (1): 在恆定時間內實現的總重複次數,數字越高表示結果越可信
- (2): 單次重複持續時間 (ns/op),數字越低表示性能越好
- (3): 堆內存 (B/op),數字越低表示性能越好
- (4): 平均分配次數每次重複 (allocs/op),數字越低表示性能越好
中間件
您可以在gin-contrib 中找到許多有用的Gin中間件。
用戶
使用Gin Web框架的優秀項目列表。