乐趣区

关于golang:Go-一个对新手很友好的项目带界面

这个开源我的项目就是: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 设置为测试环境

首先进入到服务初始化界面。

接下来填写 MySQLRedis 配置信息,填写实现后,点击初始化按钮。

如上图所示,示意服务初始化胜利,须要再重新启动服务,服务启动后就会看到登录界面。

应用默认用户信息:adminadmin 登录即可,登录胜利后就会看到仪表盘界面。

已集成哪些性能?

Panic 时邮件告警告诉

在后盾可配置邮件发件人信息,如下图所示:

邮件模板如下:

接口鉴权

在后盾可设置调用方 KEY、调用方 SECRET、调用方对接人、备注等信息。

将创立的调用方的 KEY、SECRET 发给调用方即可,能够对调用方进行 启用 / 禁用 / 删除 等操作,还能够对其受权可拜访的接口。

接口鉴权是基于 HTTP Header 中的两个参数 AuthorizationAuthorization-Date 存储签名信息,代码中提供了 3 种语言的加密算法:GoPHPJS

代码生成工具

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…

如果您有好的想法和倡议,欢送加好友交换。

退出移动版