关于
go-gin-api
是基于 Gin 进行模块化设计的 API 框架,封装了常用的功能,使用简单,致力于进行快速的业务研发,同时增加了更多限制,约束项目组开发成员,规避混乱无序及自由随意的编码。
供参考学习,线上使用请谨慎!
集成组件:
- 支持 rate 接口限流
- 支持 panic 异常时邮件通知
- 支持 cors 接口跨域
- 支持 Prometheus 指标记录
- 支持 Swagger 接口文档生成
- 支持 GraphQL 查询语言
- 支持 trace 项目内部链路追踪
- 支持 pprof 性能剖析
- 支持 errno 统一定义错误码
- 支持 zap 日志收集
- 支持 viper 配置文件解析
- 支持 gorm 数据库组件
- 支持 go-redis 组件
- 支持 RESTful API 返回值规范
- 支持 生成数据表 CURD、控制器方法 等代码生成器
- 支持 cron 定时任务,在后台可界面配置
- 支持 websocket 实时通讯,在后台有界面演示
- 支持 web 界面,使用的 Light Year Admin 模板
文档索引(可加入交流群)
快速启动
MySQL 初始化
create database go_gin_api;
create user 'root'@'127.0.0.1' identified by '123456';
grant create,select,insert,update,delete on go_gin_api.* to 'root'@'127.0.0.1';
生成 graphql 代码
printf '// +build tools\npackage tools\nimport (_ "github.com/99designs/gqlgen"\n _ "github.com/99designs/gqlgen/graphql/introspection")' | gofmt > tools.go
go run github.com/99designs/gqlgen init
go mod tidy
go run github.com/99designs/gqlgen
错误处理
generating core failed: unable to load github.com/nxsre/go-gin-api/internal/graph/model - make sure you're using an import path to a package that exists
修改 gqlgen.yml 重新运行 gqlgen
vi gqlgen.yml
...
# gqlgen will search for any type names in the schema in these go packages
# if they match it will use them, otherwise it will generate them.
#autobind:
# - "github.com/nxsre/go-gin-api/internal/graph/model"
...
go run github.com/99designs/gqlgen
目录结构
.
├── assets ## 静态资源
│ ├── bootstrap
│ └── templates
├── cmd ## 可独立执行程序
│ ├── ...
├── configs ## 配置文件
├── deploy ## 部署相关配置
│ ├── loki
│ └── prometheus
├── docs
├── internal ## 业务目录
│ ├── api ## api 接口
│ ├── code ## 错误码定义
│ ├── graph ## graph 接口
│ ├── pkg ## 内部使用的 package
│ ├── proposal ## 提案
│ ├── render ## 渲染 HTML
│ ├── repository ## 资源
│ ├── router ## 路由
│ ├── services ## 服务
│ └── websocket ## websocket 接口
├── logs ## 日志目录
├── pkg ## 可供外部使用的 package
│ ├── ...
└── scripts ## 脚本程序
其他
查看 Jaeger 链路追踪 Demo 代码,请查看 v1.0 版 ,链接地址:http://127.0.0.1:9999/jaeger_test
调用的其他服务端 Demo 代码为 https://github.com/nxsre/go-jaeger-demo
联系作者