最近在学 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