基于 gin-gonic/gin 的企业级 Web 框架增强版,提供开箱即用的 JWT 认证、SSE 实时通信、缓存管理、OpenAPI 文档生成等企业级功能。涵盖选项式路由配置、统一响应格式、中间件管理、安全加固、性能优化等完整开发能力。
这个 Skill 是 github.com/darkit/gin 的可复用操作手册:既服务上层应用接入,也服务本仓维护。每次先确认当前 workspace 是“调用方项目”还是“框架仓库”,再选择对应链路。
先看 go.mod:
go list -m
github.com/darkit/gin:进入 本仓维护模式,以源码、测试、docs、internal/tools/gincompat 为准。go.mod、入口、相关源码、近邻测试、当前 docs。rg、go doc、聚焦文件读取定位事实;不要凭记忆改公共 API。references/quickstart.md 开始。gincompat。github.com/gin-gonic/gin 同名 API 优先保持上游调用形态。docs/darkit-gin/ 下 references/assets。| 任务 | 先读 | 可复用模板 / 继续查 |
|---|---|---|
| 3-5 分钟跑通服务 | references/quickstart.md |
assets/examples/basic_server.go.tmpl |
从 gin-gonic/gin 迁移 |
references/quickstart.md、references/context-cheatsheet.md |
docs/gin-upstream-compat.md |
| Engine 配置、生命周期、provider | references/engine-options.md |
engine.go、options.go |
| 路由分组、资源路由、regex、AutoRegister | references/router-patterns.md |
router.go、regex_router.go、auto_register.go |
| Context、参数、响应、上传下载 | references/context-cheatsheet.md |
context*.go、upload.go、相关 tests |
| Auth / session / permission | references/auth-integration.md |
auth/README.md、auth/DESIGN.md |
| Cache / storage / idempotency | references/cache-storage-integration.md |
pkg/cache、pkg/storage、middleware/cache.go |
| Middleware 组合 | references/middleware-catalog.md |
middleware/README.md、middleware/ |
| Problem / SSE / NDJSON / webhook / probes / OpenAPI | references/feature-recipes.md |
examples/streaming、examples/probes、pkg/swagger |
| 静态资源 / SPA / ZIP / embed | references/static-site-recipes.md |
docs/static-design.md、pkg/static、engine_static.go |
| 能力盘点与误用排查 | references/capability-inventory.md |
docs/api-reference.md、README.md |
| 应用侧排障 | references/troubleshooting.md |
失败日志、请求复现、调用方测试 |
| 本仓结构与文档地图 | references/repo-doc-map.md |
DESIGN.md、internal/DESIGN.md |
默认保持调用方项目结构,按三种接入强度选一条:
gin "github.com/darkit/gin"。gin.New/Default、Router()、增强 Context、标准响应、regex、auto-register。交付应用侧改动时给出:改动文件、核心代码、配置项、验证命令、最小 curl / httptest、生产风险点。
确认当前 module 是 github.com/darkit/gin 后,再使用仓内维护门禁。
Context.Param、Query、PostForm、DefaultQuery、DefaultPostForm 保持上游单一来源语义。Input(...);ParamInt 等增强 helper 基于聚合输入解析。Context.Error(err error) *gin.Error 保持上游错误收集语义;统一错误响应使用 ErrorResponse(...)、Problem(...) 或 typed helpers。Negotiate(code, gin.Negotiate) 保持上游语义;自动协商使用 AutoNegotiate(...)。Use(...)、GET(...)、Group(...)、Static* 保持 Gin-like 调用形态;混合中间件签名使用 UseAny(...)。ToDir(...):上传根目录。ToSubDir(...):安全相对子目录。AsName(...):纯文件名。NameBy(...):批量上传逐文件命名。internal/pathutil.SafePath(...),不要另造目录穿越校验。SaveFiles(...) 必须先规划全部目标,再以 ErrDuplicateUploadTarget 拒绝重复解析目标。UploadResult.RelativePath 是相对上传根目录、slash-normalized 的应用侧稳定路径。按影响面选择,公共 API / 行为变更默认跑全:
gofmt -w <changed-go-files>
go test -count=1 ./...
go test -race -count=1 ./...
go vet ./...
git diff --check
上游兼容工作追加:
GOWORK=off go run ./internal/tools/gincompat -format markdown
GOWORK=off go run ./internal/tools/gincompat -format json
兼容门禁关注:根包 / 子包 missing == 0,核心方法 upstream_only == 0,incompatible == 0;新增映射必须同步 internal/tools/gincompat、契约测试和 docs/gin-upstream-compat.md。
公共用法或 API 变化时,同步检查:
README.mddocs/usage.mddocs/api-reference.mddocs/gin-upstream-compat.mddocs/extension-compat-mapping.mddocs/darkit-gin/references/*.mddocs/darkit-gin/assets/examples/*.tmpl上传 API 变化尤其要同步 references/context-cheatsheet.md 与 assets/examples/file_upload_download.go.tmpl。