用途:CanOpener 是编译期 OpenAPI 3.x 客户端生成器,用于创建和维护 Elixir API 客户端包。它读取 OpenAPI JSON 规范,生成带类型的客户端函数、schema 结构体以及 from_map/1 解码器,且不使用运行时反射。
主要能力:通过 /can-opener 命令分发子命令。bootstrap 用于从 OpenAPI 规范脚手架生成新的 CanOpener 客户端包;update 用于更新 OpenAPI 规范并重新生成客户端;help 显示全部可用子命令。若不带子命令调用,则显示帮助信息。
使用方式:bootstrap 会依次询问包名(snake_case)、模块名(PascalCase)、OpenAPI 规范路径、基础 URL、认证策略(:bearer 默认、{:header, "X-API-Key"} 或 :none)、路径前缀以及 GitHub 仓库信息。随后执行 mix new <package_name>,将规范复制为 openapi.json,改写 mix.exs 添加依赖 {:can_opener, git: "https://github.com/agoodway/can_opener.git"},创建使用 use CanOpener 的 API 模块,编写测试,运行 mix deps.get 与 mix compile,再通过 mix run 发现生成的函数,最后生成 README 并运行 mix test。update 会查找 openapi.json 与 use CanOpener 模块,备份旧规范、复制新规范、执行 mix compile --force,对比新旧规范报告新增/删除的操作与 schema 变化,更新测试与 README,验证后清理备份。
适用场景:需要为 Elixir 项目快速生成类型化 API 客户端、并随 OpenAPI 规范变更持续同步的场景。
限制:资料未提供收费、价格、平台支持范围等信息;生成结果依赖 OpenAPI 规范质量,不支持的端点模式或 schema 变更可能导致编译失败,需人工处理。