🎯 练习go,web项目,快速练习
项目基础代码学习于 《Go 语言编程之旅》
项目架构学习于 project-layout
├─api 接口
├─cmd 命令行
├─configs 配置文件
├─docs 文档集合
├─global 全局变量
├─initialize 初始化
├─internal 内部模块
│ ├─dao 数据访问层
│ ├─middleware 中间件
│ ├─model 模型层
│ ├─routers 路由层
│ └─service 服务层 - 项目核心业务逻辑
├─pkg 模块包
├─sql 项目sql文件
└─storage 项目生成的临时文件
├─logs 日志
└─uploads 上传文件
main.go 程序入口
需要安装 Jaeger
windows 使用 Jaeger
- 解压下载的 Jaeger 压缩包
- cd 到解压的目录,执行 jaeger-all-in-one.exe
- 运行 Jaeger Web UI http://localhost:16686/
internal/routers/router.go 中间件 注入X-Trace-ID、X-Span-ID
// 链路追踪
r.Use(middleware.Tracing())
pkg/logger/logger.go 日志追踪
func (l *Logger) WithTrace() *Logger {
ginCtx, ok := l.ctx.(*gin.Context)
if ok {
return l.WithFields(Fields{
"trace_id": ginCtx.MustGet("X-Trace-ID"),
"span_id": ginCtx.MustGet("X-Span-ID"),
})
}
return l
}
internal/service/service.go sql追踪
// svc.dao = dao.New(global.DBEngine)
svc.dao = dao.New(otgorm.WithContext(svc.ctx, global.DBEngine))
Swagger文档 https://pkg.go.dev/github.com/swaggo/gin-swagger
配置cmd swag命令
cd xxx\mod\github.com\swaggo\swag@v1.16.2\cmd\swag 即go get安装依赖swaggo的目录
go build -> swag.exe -> 丢到go的 bin目录下
swag init --help
swag init