最近在学 Golang(Go语言),也在 Github 上找了一些基于 Golang 的优秀开源框架,在这里分享给大家。

一、Gin 框架(45.7k star)

Gin 是一个用 Go (Golang) 编写的 HTTP web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架, 优于 httprouter,速度提高了近 40 倍。

Gin 框架的特性:

  • 支持中间件,传入的 HTTP 请求可以由一系列中间件和最终操作来处理,例如:Logger等。
  • JSON 验证,Gin 可以解析并验证请求的 JSON,例如检查所需值的存在。
  • 提供路由组,更好地组织路由。是否需要授权,不同的 API 版本…… 此外,这些组可以无限制地嵌套而不会降低性能。
  • 内置渲染,Gin 为 JSON,XML 和 HTML 渲染提供了易于使用的 API。
  • 错误管理方便,Gin 提供了一种方便的方法来收集 HTTP 请求期间发生的所有错误。最终,中间件可以将它们写入日志文件,数据库并通过网络发送。
  • 基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能,可扩展性好。

仓库地址:https://github.com/gin-gonic/gin

二、gorm 框架(22.8k star)

基于 Golang 开发的的 ORM 库。

gorm 框架的特性:

  • 全功能 ORM
  • 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)
  • Create,Save,Update,Delete,Find 中钩子方法
  • 支持 Preload、Joins 的预加载
  • 事务,嵌套事务,Save Point,Rollback To Saved Point
  • Context, Prepared Statement Mode, DryRun Mode
  • 批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD
  • SQL 构建器,Upsert,数据库锁
  • Optimizer/Index/Comment Hint,命名参数,子查询
  • 复合主键,索引,约束
  • Auto Migration
  • 自定义 Logger
  • 灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus…
  • 每个特性都经过了测试的重重考验
  • 开发者友好
    仓库地址:https://github.com/go-gorm/gorm

三、Viper 框架(14.7k star)

Viper 是一个适用于 Go 应用程序(包括12因子应用程序)的完整配置解决方案。它旨在在应用程序中工作,并且可以处理所有类型的配置需求和格式。

Viper 框架的特性:

  • 设置默认值
  • 从JSON,TOML,YAML,HCL,envfile和Java属性配置文件中读取
  • 实时观看和重新读取配置文件(可选)
  • 从环境变量中读取
  • 从远程配置系统(etcd或Consul)中读取,并观察更改
  • 从命令行标志读取
  • 从缓冲区读取设置显式值

你可以将 Viper 视为满足您所有应用程序配置需求的注册表。

仓库地址:https://github.com/spf13/viper

四、Go-MySQL-Driver 框架(10.5k star)

Go MySQL 驱动程序是 Golang 数据库、sql 包的 MySQL 驱动程序。

Go-MySQL-Driver 框架的特性:

  • 轻巧快速
  • 本机Go实施。没有C绑定,只有纯Go
  • 通过TCP / IPv4,TCP / IPv6,Unix域套接字或自定义协议的连接
  • 自动处理断开的连接
  • 自动连接池(按数据库/ sql包)
  • 支持大于16MB的查询
  • 全面的sql.RawBytes支持
  • 准备好的语句中的智能LONG DATA处理
  • 通过文件允许列表和io.Reader支持来确保对LOAD DATA LOCAL INFILE的安全支持
  • 可选时间,时间解析
  • 可选的占位符插值

仓库地址:https://github.com/go-sql-driver/mysql

五、Go-Redis 框架(10.8k star)

用于 Golang 的类型安全的 Redis 客户端。

仓库地址:https://github.com/go-redis/redis

六、gin-swagger 框架(1.5k star)

基于 Gin 的中间件,以使用 Swagger 2.0 自动生成 RESTful API 文档。

仓库地址:https://github.com/swaggo/gin-swagger