文章目录
- Goa:用 DSL 设计 API,生成代码这件事它替你干了
Goa:用 DSL 设计 API,生成代码这件事它替你干了
Goa 是一个面向 Go 的 API 设计框架,GitHub 上有 6,090 个 Star。它的思路是先写设计,再让工具生成服务端代码、客户端代码和 OpenAPI 文档,省掉手写样板代码的环节。
传统开发里,接口和文档常由不同人维护,时间一长就容易不同步。Goa 用 Go 风格的 DSL 描述 API 方法、参数、返回值、路由、协议映射等,运行goa gen后代码和文档一起生成。
这个 DSL 是 Go 代码,类型检查和自动补全都能直接用,不用额外学配置语法。Goa 能从同一份设计生成 HTTP REST、gRPC、JSON-RPC 服务,业务逻辑写在生成的接口里,传输细节由框架处理。
生成范围包括服务端接口、客户端包、路由适配器、OpenAPI 文档、测试 CLI 等。文档和代码同源,改了设计重新生成就能保持一致。官方称可减少 30% 到 50% 的代码量。
安装简单,执行go install goa.design/goa/v3/cmd/goa@latest,在 design.go 里描述服务,再跑goa gen即可。Goa 还内置了认证、鉴权、CORS、日志、拦截器等能力,examples 仓库覆盖了文件上传、SSE、错误处理、安全策略等场景。
它适合 API 数量多、协议多、希望文档和代码同步的团队。如果项目很小,引入代码生成可能反而增加负担。Goa 把确定性部分交给机器,业务逻辑仍由开发者实现。协议是 MIT,对 Go 开发者来说是一个可选项。
对 Go 开发者来说是一个可选项。