Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin. https://gin-gonic.com/
Gin是一个用Go写成的HTTP服务器。他像Martini-like,但是比其快了40倍。如果想体验极速,开始使用Gin吧。
初看项目在github里面star 34.7k。
安装
golang 1.11+
go get -u github.com/gin-gonic/gin
最简单的例子
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
官方的实例
介绍
基于Radix tree路由, 更小内存消耗。没有反射。
传入的http请求可以由一系列中间件和最终操作处理。例如需要post db中的数据,可以通过Logger, Authorization, GZIP中间件。
gin能catch住http请求处理中的问题。这样你的服务器将会一直都运行。例如,可以将错误信息转发给哨兵。
json validation
Gin能将json方式的请求,解析出来。例如能检测请求的数据值是否存在。
routes grouping
让你更好的组织路由。不同版本的api,是否需要校验。。。在这种情况,the grouping能被无限制的嵌套到其中,并且不造成任何的效率的降低。
Error management
Gin提供了便利的方式,收集任何在http请求处理过程中的发生的错误。最终,中间件将会把着一些信息写入一个日志中,或者通过网络写入到db中。
Rendering built-in
Gin提供了Rendering api为json,xml,html。
extendable
扩展性。你可以去通过学习sample代码,很容易掌握如何编写新的中间件。
特性
Gin v1 stable features
0分配路由
最快的静态路由框架;
完整单元测试套件;
被实战检验过;
API冻结,新的发布不会造成对你的代码的破坏;
jsoniter,可以通过命令行来修改json包。
go build -tags=jsoniter .