跳转到内容

x/openapi Primer

实验性 — API 兼容性未冻结。采用前请先评估。查看发布策略了解当前成熟度。

当你已经通过 x/* 家族 确认问题属于从 router.RouteInfo 值生成 OpenAPI 3.1 规范、用操作提示注解路由,或在不依赖外部库的情况下输出 JSON/YAML 时,打开这一页。

x/openapi 从显式路由元数据生成文档结构 — 不通过反射检查处理器函数,且仅依赖标准库。CLI 集成住在 cmd/plumego/commands/spec.gox/openapi 只负责文档模型和生成器。

  • 你正在运行 plumego generate spec 并需要理解它生成什么,或者为什么某个路由缺失
  • 你正在使用 plumego.spec.yaml 提示文件注解操作
  • 你正在直接从 Go 代码调用 openapi.New().Generate(routes, hints)
  • 你需要从 router.RouteInfo 值输出 JSON 或 YAML 而无需外部库
  • 运行时添加 Swagger UI 端点 — 那是应用程序代码,不是 x/openapi
  • 对 OpenAPI 文档进行模式验证或 linting — 使用外部工具
  • 改动需要解析 YAML 输入 — x/openapi 输出 YAML 但不解析它
  • 需要修改的是 CLI 命令本身(cmd/plumego/commands/spec.go),而非文档模型
  1. x/openapi/DocumentGenerator、模式辅助工具、序列化器
  2. cmd/plumego/commands/spec.goplumego generate spec 的 CLI 集成
  3. reference/standard-service — 用作生成输入的规范路由注册
这些工作适合留在 x/openapi一旦变成这些问题就应移出
Generator.Generate:将 router.RouteInfo 映射到 Document通过反射从处理器函数参数推断模式
Op 提示:合并调用方提供的操作元数据解析 plumego.spec.yaml 中的 YAML — 那属于 CLI 命令
MarshalJSON / MarshalYAML:无外部依赖的序列化根据 OpenAPI 3.1 JSON Schema 验证生成的文档 — 使用外部工具
PathParamQueryParamHeaderParam 辅助工具从 Go 结构体标签生成完整的 JSON Schema

大多数 OpenAPI 生成工具需要结构体标签、对处理器参数的反射,或沉重的代码生成管道。x/openapi 采用不同的方式:读取路由器已经生成的 router.RouteInfo 值,并将它们与显式提示合并。这使生成的文档能忠实反映路由器实际注册的内容,而不将文档模型与处理器实现细节耦合。