Delphi 的 OpenAPI 客户端/服务器工具 — 对比指南
2026 年 Delphi 和 C++ Builder 开发者可用的 OpenAPI 客户端和代码生成选项中立调研(附来源引用):sgcOpenAPI、OpenAPI Generator、Swagger Codegen、mORMot 2、TMS XData 及其配套的 OpenAPI Delphi Generator,以及手动编写 REST 客户端方案。每项功能声明均链接至项目官方文档。
2026 年 Delphi 和 C++ Builder 开发者可用的 OpenAPI 客户端和代码生成选项中立调研(附来源引用):sgcOpenAPI、OpenAPI Generator、Swagger Codegen、mORMot 2、TMS XData 及其配套的 OpenAPI Delphi Generator,以及手动编写 REST 客户端方案。每项功能声明均链接至项目官方文档。
每种选项的一段摘要,附上官方文档或仓库的链接。详细对比见下方矩阵。
eSeGeCe · Commercial
商业 Delphi / C++ Builder 组件套件。解析 OpenAPI 3.x JSON / YAML 和 Swagger 1.x / 2.x 规范,然后生成原生 Object Pascal 接口、记录和枚举,可在 Delphi 7 至 RAD Studio 13 的 VCL 和 FireMonkey 下干净编译。同时套装提供 OpenAPI 服务器组件,可将端点发布为实时 OpenAPI 文档,并根据规范绑定处理程序。附带 1,195+ 预构建 Pascal SDK,涵盖 Amazon AWS(280+)、Google Cloud(250+)、Microsoft Azure(650+)和 Microsoft Graph(15+)。生成的代码除 sgcOpenAPI 运行时外无外部依赖。
OpenAPI Tools community · Apache 2.0 (open source)
开源 Java 工具,最初从 Swagger Codegen 分叉,提供 60 个以上客户端生成器和 40 个以上服务器存根生成器。 为 C、C#、C++(cpp-restsdk、Qt5、Oat++、Tizen、Unreal Engine 4)、Go、Java、Kotlin、PHP、Python、Rust、TypeScript 等众多语言生成客户端和/或服务器代码。官方生成器列表不包含 Delphi / Object Pascal / Free Pascal 目标。
SmartBear / community · Apache 2.0 (open source)
来自 SmartBear 的原始 Java 代码生成器项目,OpenAPI Generator 于 2018 年从中分叉。 支持 ActionScript、Ada、Apex、Bash、C#、C++、Clojure、Dart、Elixir、Erlang、Go、Groovy、Haskell、Java、Kotlin、Lua、Node.js、Objective-C、Perl、PHP、PowerShell、Python、R、Ruby、Rust、Scala、Swift 和 TypeScript。 3.x 系列支持 OpenAPI 3.0;2.x 系列仅支持 OpenAPI 2.0(Swagger)。两个系列均无 Delphi 或 Object Pascal 生成器。
Arnaud Bouchez / Synopse · MPL / GPL / LGPL (open source)
mORMot 2 附带 mormot.net.openapi.pas,读取 OpenAPI 3.x 或 Swagger 2.0 文档(文件或 URL)并生成 FPC / Delphi Pascal 客户端单元 — 高级记录和动态数组作为 DTO、枚举值的 Pascal 枚举,以及将 HTTP 状态码转换为异常。该单元针对 FPC 和 Delphi 7 / 2009 及更高版本,作为更广泛的 mORMot SOA / ORM 框架的一部分运行。
TMS Software / Landgraf Software · Commercial (XData) / Apache 2.0 + Commons Clause (generator)
TMS XData 是一个商业 Delphi REST / JSON / ORM 远程框架。 XData 服务器可以在 /openapi/swagger.json 发布 OpenAPI(原 Swagger)文档供其端点使用,并与 SwaggerUI / Redoc 配合。 配套的 OpenAPI Delphi Generator(原内置于 XData,现为 landgraf-dev/openapi-delphi-generator 的独立开源项目)消费 Swagger 2.0 / OpenAPI 3.0 文档并生成 Delphi 接口及 DTO 类,供 TXDataClient 使用。
Indy Project / Embarcadero · BSD / MPL (Indy) · RAD Studio EULA (THTTPClient)
常见现实:开发者使用 TIdHTTP(Indy)或 System.Net.HttpClient.THTTPClient(随 Delphi 附带)手动编写 REST 客户端。无代码生成,无模式;使用 RTL JSON 单元(或 TJSONObject)手动进行 JSON 序列化。身份验证、重试逻辑和分页也是手动实现的。
勾选()表示项目文档记载了原生支持;横线(—)表示项目未原生提供;波浪线(~)表示部分支持 / 需借助插件 / 未经明确记录——详见来源部分的核实说明。
| 功能 | sgcOpenAPI | OpenAPI Generator | Swagger Codegen | mORMot 2 OpenAPI client generator | TMS XData & OpenAPI Delphi Generator | Hand-coded REST clients (Indy / THTTPClient) |
|---|---|---|---|---|---|---|
| 生成 Delphi 客户端 从 OpenAPI 3.x 生成原生 Object Pascal 客户端 | — | — | — | |||
| 生成 C++ Builder 代码 C++ Builder VCL / FMX 目标(BCC32 / BCC64) | ~ | ~ | ~ | ~ | — | |
| 生成服务器存根 从 OpenAPI 规范生成服务器端脚手架 | — | |||||
| 原生 Delphi 服务器运行时 嵌入式 HTTP 服务器组件,在 Delphi / C++ Builder 进程中托管生成的端点 | — | — | ~ | — | ||
发布实时 OpenAPI 文档
服务器在运行时公开自身的 openapi.json / openapi.yaml,供发现以及 SwaggerUI / Redoc 使用
|
— | — | — | — | ||
| 服务器端请求 / 响应校验 在运行时根据 OpenAPI 模式对入站请求和出站响应进行校验 | ~ | ~ | ~ | ~ | — | |
| HTTP/2 客户端 生成客户端中的原生 HTTP/2 传输 | ~ | ~ | — | ~ | ~ | |
| 类型化 JSON DTO 强类型类 / 记录 / 枚举 | ~ | |||||
| OAuth2 / JWT 辅助工具 内置 OAuth2 流程和 JWT 辅助工具 | ~ | |||||
| 异步 / 同步辅助工具 异步和同步两种调用模式 | ~ | |||||
| 多平台运行时 Windows / macOS / Linux / iOS / Android | ||||||
| 捆绑供应商 SDK AWS / Azure / GCP / Microsoft Graph 预构建 | — | — | — | — | — | |
| 允许商业使用 许可证允许闭源商业使用 | ||||||
| 积极维护 过去 12~18 个月内有发布或标记活动 | ~ | |||||
| 许可证模式 许可证类型 | 商业 | Apache 2.0 (open source) | Apache 2.0 (open source) | MPL / GPL / LGPL | Commercial (XData) + Apache 2.0 + CC (generator) | BSD / MPL (Indy) · RAD Studio EULA (THTTPClient) |
从上述任一选项切换时的差异简要说明。无意贬低——仅做实用对比。
OpenAPI Generator 不支持 Delphi 目标,因此这里的"迁移"是指从同一规范同时生成 C# / Java / TS 客户端和 sgcOpenAPI Delphi 客户端。如果您之前的方案是通过 COM 或 REST 在 Delphi 中调用 OpenAPI Generator 生成的 C# 包装层,sgcOpenAPI 可通过直接生成 Delphi 客户端消除该层。
Swagger Codegen 不针对 Delphi。如果您以前的工作流程导出通用 C# 或 Java 客户端并为 Delphi 进行包装,sgcOpenAPI 让您直接从同一规范生成 Delphi 客户端并消除包装层。
mORMot 的 OpenAPI 客户端生成器内嵌于更大的框架之中。如果您的应用程序仅使用生成器而不依赖 SOA / ORM / WebSocket 层,sgcOpenAPI 可提供无需额外单元的独立即插即用组件集。反之,若您同时使用 mORMot 的 SOA 合约和 ORM,仅为了 OpenAPI 生成器而切换则意味着需要重新实现这些部分,而 sgcOpenAPI 并不提供这些功能。
如果您目前使用 XData 内置的导入器从第三方 Swagger 规范生成客户端,请注意该导入器已分离为开源项目 landgraf-dev/openapi-delphi-generator——XData 中的相关类已被标记为废弃。sgcOpenAPI 是一个不同的、具有商业支持的生成器,可原生读取 OpenAPI 3.x,捆绑了主要云平台的 SDK,并支持 Delphi 7~13 和 C++ Builder。
当 API 接口增长或上游服务发布新端点时,手动编写的客户端会迅速老化。sgcOpenAPI 可以在几秒钟内从发布的规范生成相同的 DTO 和方法签名,将手动编写的逻辑释放给真正需要它的部分(自定义重试、遥测、业务粘合剂)。生成的代码使用类似的 HTTP 传输,因此开发者的思维模型保持接近。
上方矩阵中的每个单元格均可追溯到这些官方文档页面、仓库或发布说明之一。所有 URL 在撰写时均已进行 HEAD 检查。