Gin-powered 路由
复用 Gin 1.12 的成熟 HTTP 路由引擎,并在其上建立统一的中间件、上下文与生命周期模型。
基于 Gin 的生产级 Go Web 框架——配置即秩序,中间件即能力,开箱即交付。
一个框架是否值得投入,不在它能不能跑 benchmark,而在它能不能在三年后依然被团队维护、被 SRE 监控、被新人看懂。
复用 Gin 1.12 的成熟 HTTP 路由引擎,并在其上建立统一的中间件、上下文与生命周期模型。
v3.11.0 起,route.RegisterMiddleware 让业务无需 fork 即可按名注入或覆盖任何内置中间件,工厂语义保证每次 Use
独立实例。
app / server / database / log / prometheus 各司其职,不再把设置挤进同一个巨大的配置文件。
Logger 接口解耦具体实现,内置 logrus + slog 双适配器,WithFields 线程安全,支持热插拔。
HTTP 指标、系统指标、业务指标三件套,scope / route 标签让 label 不会爆炸。
Jaeger / Zipkin / OpenTelemetry 原生集成,跨服务链路一目了然。
/livez 仅验证进程存活,/readyz 并发 Ping DB / Redis,任一依赖不可达返 503。
HS256 签发与校验,严格拒绝 alg=none;Session 自带 memory / redis 双 driver, Cookie 安全标志自动透传。
go run ./cmd/scaffold new module user 一条命令生成 controller / model / view,取代重复手工创建文件的仪式感。
默认配置不预置任何真实连接,go run main.go 立即摆手;需要 DB / Redis 时从配置文件注释块按需放开。
HTTP/HTTPS 双监听、CSRF 双重提交 Cookie 防护、Gzip 压缩、X-Frame-Options 等安全响应头,一键启用。
零 Go 依赖的 Swagger UI 端点,维护 docs/openapi.yaml 即可在 /swagger/ 预览完整 API 文档。
fsnotify 监听 YAML 变更自动重载;i18n 运行时支持 Accept-Language 检测与模板变量翻译。
GORM 迁移管理器 Up/Down/Rollback/Status 全流程;Redis Lua 原子令牌桶分布式限流,故障自动降级。
Route 负责入口,Middleware 处理横切,Controller 保持轻薄,业务沉在 Model / Service。外层由配置和可观测性统一治理。
不是纸面架构,而是真正把关注点分开:每一层都能被独立替换、独立测试、独立观测。
请求进入 Gin 路由层,完成路径匹配与上下文构建。
处理日志、安全、限流、追踪等横切关注点。
控制器保持轻薄,业务与数据访问沉淀到服务层。
统一输出响应,借助上下文与超时完成优雅退出。
// 真实的服务启动入口 config := app.GetConfig() logger := app.GetLogger() appInstance, err := framework.New( framework.WithConfig(config), framework.WithLogger(logger), framework.WithShutdownTimeout(10*time.Second), ) if err != nil { logger.Fatalf("应用初始化失败: %v", err) } if err := appInstance.Run(ctx); err != nil { logger.Fatalf("服务运行失败: %v", err) }