hz 与 Thrift IDL
hz 如何把 IDL 变成 HTTP 工程?
hz: Hertz 的命令行代码生成工具; 从 IDL 生成模型、路由、Handler 骨架和项目布局;- IDL: HTTP API 的机器可读契约; 描述字段、方法、路径和参数来源;
- Thrift: 本手册的默认 IDL; 在 Hertz 中驱动 HTTP 代码生成,不改变 HTTP 传输;
- Protobuf: 已有 proto3 生态时可选; 核心仍是注解到 HTTP 的映射;
如何安装并固定 hz 工具?
go install github.com/cloudwego/hertz/cmd/hz@v0.9.7
hz --version
- PATH: 确保 Go bin 目录已加入 PATH;
- 版本: 团队在工具清单或构建镜像中固定版本,避免生成结果漂移;
- 生成环境: 本机和 CI 使用相同的
hz、Thrift 编译依赖和 Go 版本;
如何初始化契约驱动项目?
go mod init example.com/article-api
hz new -module example.com/article-api -idl idl/article.thrift
go mod edit -replace github.com/apache/thrift=github.com/apache/thrift@v0.13.0
go mod tidy
-module: 必须和go.modmodule 一致;-idl: 指向入口 IDL; include 路径相对关系需要稳定;- 生成结果: 先检查目录和 diff,再补充业务实现;
如何推进一次契约变更?
修改 IDL → 兼容性审查 → hz update → 查看生成 diff
→ 实现 Service/Handler → 测试 → 提交 IDL 与生成代码
- IDL: 是接口契约,不是数据库模型;
- Handler: 骨架可重新生成,业务规则不应只存在于生成文件;
- 实践: 公共 API 变更需要评估旧客户端,不以“能够重新生成”代替兼容设计;