Files
pig-farm-controller/openspec/changes/archive/2025-10-30-refactor-migrate-gin-to-echo/proposal.md
2025-10-30 18:25:25 +08:00

1.8 KiB

Why

本项目当前使用 Gin 作为核心 Web 框架。Gin 的路由系统存在一些限制,例如无法优雅地支持类似 /:id/action/:other_id/other-action 这种在同一层级使用不同动态参数的路由模式。为了解决此问题并利用更现代、灵活的路由和中间件系统,我们计划将框架迁移到 Echo (v4)。本次变更仅进行框架替换,暂不修改现有路由结构。

What Changes

  • 核心框架替换: 将 github.com/gin-gonic/gin 的所有引用替换为 github.com/labstack/echo/v4
  • API 路由重写: 更新 internal/app/api/router.go 以使用 Echo 的路由注册方式。
  • 上下文对象适配: 在所有 Controller 和 Middleware 中,将 *gin.Context 替换为 echo.Context,并调整相关方法调用。
  • 中间件迁移: 将现有的 Gin 中间件 (AuthMiddleware, AuditLogMiddleware) 适配为 Echo 的中间件格式。
  • Swagger 文档适配: 将 gin-swagger 替换为 Echo 兼容的 echo-swagger,确保 API 文档能够正常生成和访问。
  • Pprof 路由适配: 确保性能分析工具 pprof 的路由在 Echo 框架下正常工作。

BREAKING: 这是一项纯粹的技术栈重构,不应该对外部 API 消费者产生任何破坏性影响。所有 API 端点、请求/响应格式将保持完全兼容。

Impact

  • Affected specs: 无。此变更是技术实现层面的重构,不改变任何已定义的功能规约。
  • Affected code:
    • go.mod / go.sum: 依赖项变更。
    • config.yml / config.example.yml: 更新 mode 配置项的注释。
    • internal/app/api/api.go
    • internal/app/api/router.go
    • internal/app/middleware/auth.go
    • internal/app/middleware/audit.go
    • internal/app/controller/**/*.go: 所有控制器及其辅助函数。