SuperAPI AI 工具集

fiber-logging-and-project-structure

通用与其它

查看项目

更新于 10-16 07:25

技能介绍

该技能用于指导 Go Fiber 应用的工程化组织,主要覆盖四方面。

用途与结构:按标准 Go 布局组织项目,cmd/<appname>/main.go 作为入口,internal/ 放私有包,pkg/ 放可复用包,api/ 放处理器与路由,config/ 放配置结构体。main.go 只做初始化(注册中间件、启动服务、连接数据库),业务逻辑不得写入 cmd/;处理器与业务逻辑分离,api/handler/ 处理 HTTP,internal/service/ 放领域逻辑,internal/repository/ 负责数据访问。

日志:使用结构化日志,Fiber 首选 zerolog 或 zap,生产处理器中禁用 fmt.Println 与标准库 log。尽早注册 Fiber 内置日志中间件 app.Use(logger.New()),Fiber v3 从 github.com/gofiber/fiber/v3/middleware/logger 导入。通过 ctx.Locals("requestID", uuid.New()) 添加关联 ID 并写入每条日志,禁止记录密码、令牌、PII 等敏感字段。

中间件顺序:全局中间件在路由前注册,顺序为 Logger → RequestID → CORS → RateLimiter → Auth → Routes;app.Use() 作用于其后所有路由,位置很关键。路由级中间件作为 app.Get("/path", authMiddleware, handler) 的第二个参数传入。

配置与错误:启动时用 viper、envconfig 或 godotenv 加载配置,避免在处理器中散落 os.Getenv();定义带 env 标签的类型化 Config 结构体,提供 .env.example,不提交 .env,缺少必需变量时启动即失败。处理器用 fiber.NewError(fiber.StatusBadRequest, "message") 返回 HTTP 错误,通过 app.Config().ErrorHandler 统一 JSON 错误响应,生产环境不暴露内部细节或堆栈。

限制:资料未提供具体版本兼容范围、性能数据或收费信息。