Repolode
goadesign

goadesign/goa

设计优先的 Go 框架,从同一份 Go 契约生成 HTTP、gRPC 和 JSON-RPC 服务、客户端及 OpenAPI/protobuf 规范。

Star
6,122
Fork
582
未关闭 Issue
37
最近提交
4天前

这是什么?

Goa 让开发者在 Go 语言的 DSL 中一次性描述类型、操作和校验规则。基于这份设计,它会生成 HTTP、gRPC 和 JSON-RPC 的服务端与客户端代码、CLI 客户端、OpenAPI 规范以及 Protocol Buffer 定义。所有传输方式调用同一个生成的服务接口,API 文档与代码保持一致。

开发者只需在 gen/ 目录之外编写自己的业务逻辑。修改设计中的字段或校验规则后重新生成,处理器、客户端、校验和规范会一起更新。项目还提供面向编程智能体的技能包,用于指导设计变更、代码生成和验证。

配套项目 Goa-AI 可用于构建 AI 智能体和 MCP 服务器,并复用同一套类型定义。

核心功能

  • 01从同一份 Go 设计生成 HTTP、gRPC 和 JSON-RPC 传输层
  • 02自动生成 Go 客户端、CLI 客户端和请求校验
  • 03输出 OpenAPI 规范和 Protocol Buffer 定义
  • 04支持通过 WebSocket、SSE 和 gRPC 流进行流式传输
  • 05业务实现代码与生成代码分离

适用场景

  • 构建需要同时提供 REST 和 gRPC 接口的 Go 微服务
  • 无需手写即可让 OpenAPI 文档与 Go 接口保持同步
  • 让编程智能体通过修改类型化契约并重新生成代码来调整 API

快速上手

  1. 1

    安装 Goa 模块(需要 Go 1.27.3 或更高版本)

    go get goa.design/goa/v3@latest
  2. 2

    根据设计生成服务端和客户端代码

    go run goa.design/goa/v3/cmd/goa gen hello/design
  3. 3

    创建入门应用文件

    go run goa.design/goa/v3/cmd/goa example hello/design
  4. 4

    在 8000 端口运行服务

    go run ./cmd/hello --http-port=8000

使用前须知

  • 需要 Go 1.27.3 或更高版本。
  • 使用 gRPC 或 JSON-RPC 需要安装 Protocol Buffer 编译器和 Go protobuf 生成器;仅使用 HTTP 时可以避免这一步。

收录于专题

标签

常见问题

goa 是什么?
设计优先的 Go 框架,从同一份 Go 契约生成 HTTP、gRPC 和 JSON-RPC 服务、客户端及 OpenAPI/protobuf 规范。 Goa 让开发者在 Go 语言的 DSL 中一次性描述类型、操作和校验规则。基于这份设计,它会生成 HTTP、gRPC 和 JSON-RPC 的服务端与客户端代码、CLI 客户端、OpenAPI 规范以及 Protocol Buffer 定义。所有传输方式调用同一个生成的服务接口,API 文档与代码保持一致。
goa 可以免费使用吗?用的什么许可证?
goa 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
goa 还在维护吗?
活跃维护中。goa 最近一次提交是在 2026年11月3日。
goa 适合用来做什么?
构建需要同时提供 REST 和 gRPC 接口的 Go 微服务 无需手写即可让 OpenAPI 文档与 Go 接口保持同步 让编程智能体通过修改类型化契约并重新生成代码来调整 API
goa 怎么安装和运行?
安装 Goa 模块(需要 Go 1.27.3 或更高版本): go get goa.design/goa/v3@latest 根据设计生成服务端和客户端代码: go run goa.design/goa/v3/cmd/goa gen hello/design 创建入门应用文件: go run goa.design/goa/v3/cmd/goa example hello/design 在 8000 端口运行服务: go run ./cmd/hello --http-port=8000
在哪里获取 goa?
源代码和安装说明在 GitHub 上:https://github.com/goadesign/goa

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目