Gin之gin介绍和安装

1、gin介绍

1.1 gin 是什么?

Gin 是一个用 Go (Golang) 编写的 HTTP web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架,由于

httprouter,速度提高了近 40 倍。如果你需要极好的性能,使用 Gin 吧。

https://github.com/go-martini/martini

https://github.com/julienschmidt/httprouter

1.2 gin优点?

  • 快速

    基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能。

  • 支持中间件

    传入的 HTTP 请求可以由一系列中间件和最终操作来处理。例如:Logger,Authorization,GZIP,最终操作

    DB。

  • Crash 处理

    Gin 可以 catch 一个发生在 HTTP 请求中的 panic 并 recover 它。这样,你的服务器将始终可用。例如,你可

    以向 Sentry 报告这个 panic!

  • JSON 验证

    Gin 可以解析并验证请求的 JSON,例如检查所需值的存在。

  • 路由组

    更好地组织路由。是否需要授权,不同的 API 版本...... 此外,这些组可以无限制地嵌套而不会降低性能。

  • 错误管理

    Gin 提供了一种方便的方法来收集 HTTP 请求期间发生的所有错误。最终,中间件可以将它们写入日志文件,

    数据库并通过网络发送。

  • 内置渲染

    Gin 为 JSON,XML 和 HTML 渲染提供了易于使用的 API。

  • 可扩展性

    新建一个中间件非常简单。

1.3 gin特性?

Gin v1 稳定的特性:

  • 零分配路由。
  • 仍然是最快的 http 路由器和框架。
  • 完整的单元测试支持。
  • 实战考验。
  • API 冻结,新版本的发布不会破坏你的代码。

1.4 基准测试

Gin 使用了自定义版本的 HttpRouter。

查看所有基准测试:https://github.com/gin-gonic/gin/blob/master/BENCHMARKS.md

Benchmark name (1) (2) (3) (4)
BenchmarkGin_GithubAll 30000 48375 0 0
BenchmarkAce_GithubAll 10000 134059 13792 167
BenchmarkBear_GithubAll 5000 534445 86448 943
BenchmarkBeego_GithubAll 3000 592444 74705 812
BenchmarkBone_GithubAll 200 6957308 698784 8453
BenchmarkDenco_GithubAll 10000 158819 20224 167
BenchmarkEcho_GithubAll 10000 154700 6496 203
BenchmarkGocraftWeb_GithubAll 3000 570806 131656 1686
BenchmarkGoji_GithubAll 2000 818034 56112 334
BenchmarkGojiv2_GithubAll 2000 1213973 274768 3712
BenchmarkGoJsonRest_GithubAll 2000 785796 134371 2737
BenchmarkGoRestful_GithubAll 300 5238188 689672 4519
BenchmarkGorillaMux_GithubAll 100 10257726 211840 2272
BenchmarkHttpRouter_GithubAll 20000 105414 13792 167
BenchmarkHttpTreeMux_GithubAll 10000 319934 65856 671
BenchmarkKocha_GithubAll 10000 209442 23304 843
BenchmarkLARS_GithubAll 20000 62565 0 0
BenchmarkMacaron_GithubAll 2000 1161270 204194 2000
BenchmarkMartini_GithubAll 200 9991713 226549 2325
BenchmarkPat_GithubAll 200 5590793 1499568 27435
BenchmarkPossum_GithubAll 10000 319768 84448 609
BenchmarkR2router_GithubAll 10000 305134 77328 979
BenchmarkRivet_GithubAll 10000 132134 16272 167
BenchmarkTango_GithubAll 3000 552754 63826 1618
BenchmarkTigerTonic_GithubAll 1000 1439483 239104 5374
BenchmarkTraffic_GithubAll 100 11383067 2659329 21848
BenchmarkVulcan_GithubAll 5000 394253 19894 609

(1)、在一定的时间内实现的总调用数,越高越好

(2)、单次操作耗时(ns/op),越低越好

(3)、堆内存分配 (B/op), 越低越好

(4)、每次操作的平均内存分配次数(allocs/op),越低越好

1.5 参考

Gin HitHub:https://github.com/gin-gonic/gin/

使用例子:https://github.com/gin-gonic/examples

1.6 用户

使用 Gin web 框架的知名项目:

  • gorush:Go 编写的通知推送服务器。
  • fnproject:原生容器,云 serverless 平台。
  • photoprism:由 Go 和 Google TensorFlow 提供支持的个人照片管理工具。
  • krakend:拥有中间件的超高性能 API 网关。
  • picfit:Go 编写的图像尺寸调整服务器。
  • gotify:使用实时 web socket 做消息收发的简单服务器。
  • cds:企业级持续交付和 DevOps 自动化开源平台。

2、gin安装

2.1 要求

Go 1.13 及以上版本

2.2 安装

要安装 Gin 软件包,需要先安装 Go 并设置 Go 工作区。

1、下载并安装 gin:

shell 复制代码
$ go get -u github.com/gin-gonic/gin

2、将 gin 引入到代码中:

go 复制代码
import "github.com/gin-gonic/gin"

3、(可选)如果使用诸如 http.StatusOK 之类的常量,则需要引入 net/http 包:

go 复制代码
import "net/http"
相关推荐
呆萌很3 天前
【Gin】文件上传下载(单文件 + 多文件)
gin
先跑起来再说5 天前
Go 排行榜系统的工程化实现:分布式锁、快照表与定时刷新
分布式·go·gin
必胜刻7 天前
一个异步生成游戏功能的落地复盘:Redis Stream + WebSocket + 状态补偿
redis·websocket·golang·gin·状态补偿
TE-茶叶蛋8 天前
B-tree vs GIN Trigram vs HNSW
gin
曾几何时`10 天前
Go(一)Gin框架 和 GORM机制
开发语言·golang·gin
老毛肚11 天前
Gin + GORM 接口可视化测试
gin
lolo大魔王11 天前
Gin 框架中间件超详细实战教程(原理、全局中间件、路由中间件、自定义中间件、跨域、日志拦截)
中间件·gin
lolo大魔王11 天前
Gin 框架响应格式与 HTML 模板渲染完整实战教程
前端·html·gin
必胜刻20 天前
Go 调用Coze工作流实现 AI 游戏生成
开发语言·ai·golang·gin
比特森林探险记22 天前
context 在 gRPC / Gin / K8s 中的实战
容器·kubernetes·gin