SuperAPI AI 工具集

go-openapi

编程与开发

查看项目

更新于 10-15 21:37

技能介绍

用途:在 Go 中做规范优先(spec-first)的 REST 开发,让 OpenAPI 规范成为唯一事实来源,类型、路由和客户端都由规范生成,避免手写副本与规范分叉。

主要能力:支持三种工作模式——Adopt(为已有手写 handler 的项目引入生成而不重写)、Extend(改规范、重新生成、实现)、Review(核对 handler、规范与已发布客户端是否一致,以及变更是否隐性破坏)。生成器选择上,oapi-codegen 为默认,生成类型、服务端接口与客户端,兼容 net/http、chi、echo、gin;ogen 适合可接受其约定的全生成严格校验服务端;swaggo/swag 仅用于不打算转换的遗留代码优先项目。

使用方式:将生成器固定为模块工具(Go 1.24+):go get -tool github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen,并配置 oapi-codegen.yaml(如 models、std-http-server、strict-server、embedded-spec 等选项),通过 //go:generate 调用。提交生成文件,CI 用 go generate ./... && git diff --exit-code 检查是否过期。实现时断言 var _ api.StrictServerInterface = (*Server)(nil),为每个已记录状态返回类型化响应,仅对未记录失败路径返回 Go error,禁止手改 *.gen.go。用 nethttpmiddleware.OapiRequestValidator 做边界校验(400),业务规则仍留在领域层。错误统一用 RFC 9457 Problem 模式并以 application/problem+json 返回。用 oasdiff breaking 在 CI 检测破坏性变更,用生成的客户端写契约测试。规范用 vacuum/spectral/redocly lint,每个操作有 operationId,每个 schema 有 description。

适用场景:需要规范与实现强一致、可审查契约变更的 Go REST 服务。

限制:资料未提供具体收费、价格、平台与效果信息;生成器版本、路由框架等需按项目实际选择。