稀土掘金 稀土掘金

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 设置为测试环境

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

image.png 接下来填写 MySQLRedis 配置信息,填写完成后,点击初始化按钮。

image.png 如上图所示,表示服务初始化成功,需要再重新启动服务,服务启动后就会看到登录界面。

03.png

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

04.png

已集成哪些功能?

Panic 时邮件告警通知

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

05.png

邮件模板如下:

06.png

接口鉴权

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

07.png

08.png

将创建的调用方的 KEY、SECRET 发给调用方即可,可以对调用方进行 启用/禁用/删除 等操作,还可以对其授权可访问的接口。

09.png

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

10.png

代码生成工具

11.png

gormgen,基于数据表生成三个文件,以 admin 表为例会生成:gen_table.md 表注释的 MD 文档、gen_model.go 表字段的结构体、gen_admin.go 表 CURD 操作代码。

意义:在进行业务需求开发时,创建完数据表后,执行代码生成工具,常用的 CURD 操作全部生成完毕,使用的时候只需要 . 后面的方法即可,这样大大提高了业务开发效率。

12.png

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 信息 串起来,记录到日志中。

13.png

点击某一行可查看日志详情。

接口文档

通过 handlergen 生成的代码,自带接口文档。

14.png

接口指标

项目中使用 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

类似效果:

15.png

16.png

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 模板

项目地址

源码地址

github.com/xinliangnot…

在线文档

www.yuque.com/xinliangnot…

如果您有好的想法和建议,欢迎加好友交流。

代做工资流水公司咸阳代开房贷工资流水惠州贷款流水模板沈阳入职流水代开海口打车贷银行流水兰州打印企业对私流水新乡银行流水代办湘潭签证银行流水 查询烟台做消费贷流水阜阳对公账户流水公司上海贷款工资流水 打印湘潭签证银行流水 公司银川开贷款流水盐城银行流水账办理惠州工资流水账单价格太原工资证明图片镇江做房贷收入证明中山房贷工资流水 开具昆明流水账单代开宜昌贷款工资流水 打印沧州企业银行流水样本咸阳代开个人工资流水许昌贷款银行流水制作济宁薪资银行流水费用阜阳代做薪资流水单珠海对公流水制作石家庄自存银行流水报价绵阳代开房贷流水兰州背调工资流水代开廊坊车贷工资流水 打印中山银行流水费用香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化