3.2 KiB
3.2 KiB
v0.7.0-preview
这一版把 API 定义、项目生成、基础模块初始化和完整业务示例接通。 预览版用于固定版本试用;API 方言有明确范围,HTTP/2 仍是独立实验适配器。
安装与开始
GOPRIVATE=git.yuntuo.hk go install git.yuntuo.hk/k2safe/go-omni/cmd/go-omni@v0.7.0-preview
go-omni api new --module example.com/demo ./demo
cd demo
GOPRIVATE=git.yuntuo.hk go mod tidy
go run ./cmd/server
需要该 Git 仓库的读取权限时,通过自己的 Git 凭据管理器配置;不要将凭据写入 module path 或 go.mod。 CLI 会将自身下载版本固定到生成项目的 go.mod。业务项目正常使用远程模块,不需要本地 replace。
使用已有定义,并一次选择基础模块:
go-omni new --api user.api --module example.com/userService \
--database mysql --storage local --log-output file ./userService
MySQL 与存储需要按生成 README 设置环境变量。任意契约生成的业务方法先返回 501, 由业务方实现;可直接参考 完整用户示例。
主要变化
.api生成项目、绑定/校验、路由、业务骨架和 OpenAPI;支持分组、导入、命名中间件。- 同一入口初始化 MySQL、日志、Local / S3 / R2 / OSS;标准 context 与 httpx 保持业务/网络分离。
- 生成器保护手写业务文件,校验自有文件哈希,支持只读 --check;基础设施选项持久化到 manifest。
- 完整用户示例包含数据库迁移、CRUD / 分页、事务审计、鉴权、文件导出与 requestId 日志。
- 日志文件轮转/结构化脱敏、上传策略/直传/分片,以及此前 main 分支的通用业务模块一并提供。
所有变化及网络层验收记录见 CHANGELOG。
升级注意
- 将 CLI 和项目框架依赖固定为相同版本。旧版 CRUD 项目继续使用现有目录;不能直接用 API 生成器接管已有 Go 目录。
- Gen.go 由生成器维护,业务实现/配置/迁移由项目维护。新增 API 后执行 generate 和 go test;修改或删除类型需要同步处理自己的业务代码。
.goOmni/apiManifest.json需随代码提交。切换数据库或存储选项时,在新目录生成对照后迁移;重新生成不会改写现有基础设施文件。- 配置使用 lowerCamelCase。DSN、Token、存储密钥由环境变量提供;
database.Config的 DSN 不会被 JSON/YAML 序列化。 - API 的 none/memory 数据库选项仅表示不打开连接,不会从 HTTP DTO 自动推导内存仓库或数据表。
验证入口
GO_OMNI_SCAFFOLD_INTEGRATION=1 go test -race -p=2 -count=1 -timeout=300s ./...
go vet ./...
go build ./...
python3 scripts/verifyAPIWorkflow.py
python3 scripts/verifyAPIWorkflow.py --version v0.7.0-preview \
--report performance/apiWorkflowRemote.json
最后一项在全新 module cache 安装远程 CLI,并验证无本地 replace 的项目生成、 真实 MySQL、nethttp/native 启动与业务流程。容器只使用本机临时资源,结束时清理。 本轮验收见 API 业务闭环报告。
OSS/R2 云端仍需项目自己的账号做上线环境验收;当前云端适配器检查不等同于这些账号的实网测试。