这个开源我的项目就是:go-gin-api
,目前 800+ Star。
go-gin-api
是基于 Gin 进行模块化设计的 API 框架,封装了罕用的性能,应用简略,致力于进行疾速的业务研发,同时减少了更多限度,束缚项目组开发成员,躲避凌乱无序及自在随便的编码。
下载后可间接运行
$ git clone https://github.com/xinliangnote/go-gin-api
$ cd go-gin-api
$ go run main.go -env fat // -env fat 设置为测试环境
首先进入到服务初始化界面。
接下来填写 MySQL
、Redis
配置信息,填写实现后,点击初始化按钮。
如上图所示,示意服务初始化胜利,须要再重新启动服务,服务启动后就会看到登录界面。
应用默认用户信息:admin
,admin
登录即可,登录胜利后就会看到仪表盘界面。
已集成哪些性能?
Panic 时邮件告警告诉
在后盾可配置邮件发件人信息,如下图所示:
邮件模板如下:
接口鉴权
在后盾可设置调用方 KEY、调用方 SECRET、调用方对接人、备注等信息。
将创立的调用方的 KEY、SECRET 发给调用方即可,能够对调用方进行 启用 / 禁用 / 删除 等操作,还能够对其受权可拜访的接口。
接口鉴权是基于 HTTP Header 中的两个参数 Authorization
、Authorization-Date
存储签名信息,代码中提供了 3 种语言的加密算法:Go
、PHP
、JS
。
代码生成工具
gormgen
,基于数据表生成三个文件,以 admin
表为例会生成:gen_table.md
表正文的 MD 文档、gen_model.go
表字段的构造体、gen_admin.go
表 CURD 操作代码。
意义:在进行业务需要开发时,创立完数据表后,执行代码生成工具,罕用的 CURD 操作全副生成结束,应用的时候只须要 . 前面的办法即可,这样大大提高了业务开发效率。
handlergen
,基于定义的 Handler
文件中 type interface{}
中接口办法,进行生成文件。
例如,定义的办法为:
// Login 管理员登录
// @Tags API.admin
// @Router /api/admin/login [post]
Login() core.HandlerFunc
生成后的办法为:
type loginRequest struct { }
type loginResponse struct { }
// Login 管理员登录
// @Summary 管理员登录
// @Description 管理员登录
// @Tags API.admin
// @Accept multipart/form-data
// @Produce json
// @Success 200 {object} loginResponse
// @Failure 400 {object} code.Failure
// @Router /api/admin/login [post]
func (h *handler) Login() core.HandlerFunc {return func(c core.Context) {}}
意义:本次需要的研发负责人通过定义 type interface{}
的形式,定义出须要开发的办法,执行代码生成工具,每个办法的空实现都会生成在一个独自的文件中,开发人员只需去实现各自办法即可,便于进行分工和代码治理。
接口日志
通过 链路 ID
能够将 申请信息
、 响应信息
、 调用第三方 HTTP 接口的信息
、 调用第三方 gRPC 接口的信息
、 调试信息
、 执行的 SQL 信息
、 执行的 Redis 信息
串起来,记录到日志中。
点击某一行可查看日志详情。
接口文档
通过 handlergen
生成的代码,自带接口文档。
接口指标
我的项目中应用 prometheus
进行指标收集,我的项目中默认开启 metrics 记录,能够通过 http://127.0.0.1:9999/metrics 即可查看。
GraphQL
我的项目中应用 gqlgen
实现了 GraphQL 查问,会发现与 gqlgen init 初始化的 demo 不同,是因为代码曾经集成到 go-gin-api 中,比方集成了我的项目 core 包中的 链路、日志 等。
目前仅实现了 Demo,resolver 应用的是模仿数据,不过应用可复用的 service 也曾经实现了,在代码已正文,感兴趣的能够深入研究。
Prometheus
启动 Prometheus
的配置文件,可参考:
- ./deploy/prometheus/prometheus.yml
相似成果:
Loki
Loki
是一个程度可扩大,高可用性,多租户的日志聚合零碎,有趣味能够钻研一下。
启用 Loki
的配置文件,可参考:
- ./deploy/loki/loki.yaml
- ./deploy/loki/promtail.yaml
已应用哪些组件?
- 反对 rate 接口限流
- 反对 panic 异样时邮件告诉
- 反对 cors 接口跨域
- 反对 Prometheus 指标记录
- 反对 Swagger 接口文档生成
- 反对 GraphQL 查询语言
- 反对 trace 我的项目外部链路追踪
- 反对 pprof 性能分析
- 反对 jwt 接口鉴权
- 反对 errno 对立定义错误码
- 反对 zap 日志收集
- 反对 viper 配置文件解析
- 反对 gorm 数据库组件
- 反对 go-redis 组件
- 反对 RESTful API 返回值标准
- 反对 gormgen、handlergen 代码生成工具
- 反对 web 界面,应用的 Light Year Admin 模板
我的项目地址
源码地址
https://github.com/xinliangno…
在线文档
https://www.yuque.com/xinlian…
如果您有好的想法和倡议,欢送加好友交换。