Delphi 的 OpenAPI 客户端/服务器工具 — 对比指南

2026 年 Delphi 和 C++ Builder 开发者可用的 OpenAPI 客户端和代码生成选项中立调研(附来源引用):sgcOpenAPI、OpenAPI Generator、Swagger Codegen、mORMot 2、TMS XData 及其配套的 OpenAPI Delphi Generator,以及手动编写 REST 客户端方案。每项功能声明均链接至项目官方文档。

从 OpenAPI 规范到可运行 Delphi 代码的六种途径

每种选项的一段摘要,附上官方文档或仓库的链接。详细对比见下方矩阵。

OpenAPI Generator

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 目标。

官方页面

Swagger Codegen

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 生成器。

官方页面

mORMot 2 OpenAPI client generator

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 XData & OpenAPI Delphi Generator

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 使用。

官方页面

Hand-coded REST clients (Indy / THTTPClient)

Indy Project / Embarcadero · BSD / MPL (Indy) · RAD Studio EULA (THTTPClient)

常见现实:开发者使用 TIdHTTP(Indy)或 System.Net.HttpClient.THTTPClient(随 Delphi 附带)手动编写 REST 客户端。无代码生成,无模式;使用 RTL JSON 单元(或 TJSONObject)手动进行 JSON 序列化。身份验证、重试逻辑和分页也是手动实现的。

官方页面

并排功能对比

勾选()表示项目文档记载了原生支持;横线()表示项目未原生提供;波浪线(~)表示部分支持 / 需借助插件 / 未经明确记录——详见来源部分的核实说明。

生成器、运行时、许可证

12 行
功能 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 规范生成服务器端脚手架
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)
已记录的原生支持 原生不提供 ~ 部分支持 / 通过附加组件 / 未验证

各选项的适用场景

这里的每个选项都有其真实受众。正确的选择取决于您是否需要与客户端一起生成服务器存根、支持哪些 Pascal 工具链、您的许可证偏好,以及捆绑的供应商 SDK 是否能节省时间。

选择 sgcOpenAPI

当您需要一个能从任意 OpenAPI 3.x 或 Swagger 2.x 规范生成 Delphi 7~13 和 C++ Builder 客户端代码的单一商业工具、需要预置的 AWS、Azure、Google Cloud 或 Microsoft Graph Pascal SDK、目标平台包含 VCL 以及 macOS / Linux / iOS / Android 的 FireMonkey,且要求运行时除 sgcOpenAPI 单元外零外部依赖时,请选择 sgcOpenAPI。

选择 OpenAPI Generator

当您的团队需要从相同的 OpenAPI 规范构建 Delphi 以外语言(C#、Java、Go、TypeScript、Rust、Python)的客户端或服务器存根、需要从一个工具同时生成客户端和服务器存根,或者 Apache 2.0 许可证和大量模板贡献者社区对您很重要时,请选择 OpenAPI Generator。

选择 Swagger Codegen

当您已经端到端使用 SmartBear / Swagger 生态系统(SwaggerHub、Swagger Editor),需要历史 Swagger 2.0 代码生成器的最近官方维护继承者,以及目标是主流 JVM / .NET / 脚本语言而非 Delphi 时,选择 Swagger Codegen。

选择 mORMot 2 OpenAPI 客户端生成器

当您的项目已经使用 mORMot 进行 ORM、SOA 或托管,需要 MPL / GPL / LGPL 下的开源 Pascal 原生代码生成器,或者目标是 Linux / BSD / macOS 上的 FPC(包括客户端生成器和生成的代码)时,选择 mORMot 2 OpenAPI 生成器。

选择 TMS XData 与 OpenAPI Delphi Generator

当您也用 Delphi 构建服务器并希望从一个供应商获得服务器 + 客户端 + ORM 远程功能、需要用 SwaggerUI / Redoc 浏览自己的服务合同,或已经持有 TMS Business / All-Access 许可证时,选择 TMS XData。当您只需要客户端代码生成且偏好 Apache 2.0 + Commons Clause 许可证时,选择独立的 OpenAPI Delphi Generator

选择手动编写 REST 客户端(Indy / THTTPClient)

当 API 接口很小(几个端点)、因许可证或合规原因无法使用第三方组件,或者 API 没有公开的 OpenAPI 规范且生成器毫无帮助时,选择手动编写 REST 客户端。Indy 和 THTTPClient 都随 RAD Studio 附带,无需额外依赖。

迁移到 sgcOpenAPI — 有何不同

从上述任一选项切换时的差异简要说明。无意贬低——仅做实用对比。

从 OpenAPI Generator 迁移

OpenAPI Generator 不支持 Delphi 目标,因此这里的"迁移"是指从同一规范同时生成 C# / Java / TS 客户端和 sgcOpenAPI Delphi 客户端。如果您之前的方案是通过 COM 或 REST 在 Delphi 中调用 OpenAPI Generator 生成的 C# 包装层,sgcOpenAPI 可通过直接生成 Delphi 客户端消除该层。

从 Swagger Codegen 迁移

Swagger Codegen 不针对 Delphi。如果您以前的工作流程导出通用 C# 或 Java 客户端并为 Delphi 进行包装,sgcOpenAPI 让您直接从同一规范生成 Delphi 客户端并消除包装层。

从 mORMot 2 OpenAPI 客户端生成器迁移

mORMot 的 OpenAPI 客户端生成器内嵌于更大的框架之中。如果您的应用程序仅使用生成器而不依赖 SOA / ORM / WebSocket 层,sgcOpenAPI 可提供无需额外单元的独立即插即用组件集。反之,若您同时使用 mORMot 的 SOA 合约和 ORM,仅为了 OpenAPI 生成器而切换则意味着需要重新实现这些部分,而 sgcOpenAPI 并不提供这些功能。

从 TMS XData 和 OpenAPI Delphi Generator 迁移

如果您目前使用 XData 内置的导入器从第三方 Swagger 规范生成客户端,请注意该导入器已分离为开源项目 landgraf-dev/openapi-delphi-generator——XData 中的相关类已被标记为废弃。sgcOpenAPI 是一个不同的、具有商业支持的生成器,可原生读取 OpenAPI 3.x,捆绑了主要云平台的 SDK,并支持 Delphi 7~13 和 C++ Builder。

从手动编写 REST 客户端(Indy / THTTPClient)迁移

当 API 接口增长或上游服务发布新端点时,手动编写的客户端会迅速老化。sgcOpenAPI 可以在几秒钟内从发布的规范生成相同的 DTO 和方法签名,将手动编写的逻辑释放给真正需要它的部分(自定义重试、遥测、业务粘合剂)。生成的代码使用类似的 HTTP 传输,因此开发者的思维模型保持接近。

每项声明,均有链接

上方矩阵中的每个单元格均可追溯到这些官方文档页面、仓库或发布说明之一。所有 URL 在撰写时均已进行 HEAD 检查。

来源URL
sgcOpenAPI——产品页面https://www.esegece.com/products/openapi/
sgcOpenAPI——功能https://www.esegece.com/products/openapi/features/
sgcOpenAPI——解析器https://www.esegece.com/products/openapi/parser/
sgcOpenAPI——预构建 SDKhttps://www.esegece.com/products/openapi/apis/
OpenAPI Generator——项目主页https://openapi-generator.tech/
OpenAPI Generator——GitHub 仓库https://github.com/OpenAPITools/openapi-generator
OpenAPI Generator——支持的生成器列表https://github.com/OpenAPITools/openapi-generator/blob/master/docs/generators.md
OpenAPI Generator——发布版本https://github.com/OpenAPITools/openapi-generator/releases
Swagger Codegen——产品页面(swagger.io)https://swagger.io/tools/swagger-codegen/
Swagger Codegen——GitHub 仓库https://github.com/swagger-api/swagger-codegen
Swagger Codegen 生成器(3.x 模板)https://github.com/swagger-api/swagger-codegen-generators
mORMot 2——GitHub 仓库(synopse/mORMot2)https://github.com/synopse/mORMot2
mORMot 2——README(网络与 OpenAPI 说明)https://github.com/synopse/mORMot2/blob/master/README.md
mORMot 2——发布版本https://github.com/synopse/mORMot2/releases
Synopse 论坛(Object Pascal SOA / ORM / OpenAPI)https://synopse.info/
TMS XData——产品页面https://www.tmssoftware.com/site/xdata.asp
TMS XData——文档索引https://doc.tmssoftware.com/biz/xdata/guide/index.html
TMS XData——OpenAPI 支持指南https://doc.tmssoftware.com/biz/xdata/guide/openapi.html
OpenAPI Delphi Generator(原 XData 导入器)https://github.com/landgraf-dev/openapi-delphi-generator
Indy——项目主页https://www.indyproject.org/
Indy——GitHub 仓库(IndySockets/Indy)https://github.com/IndySockets/Indy
Indy——发布版本(最新标签 10.6.3.14)https://github.com/IndySockets/Indy/releases
Embarcadero 文档——System.Net.HttpClient.THTTPClienthttps://docwiki.embarcadero.com/Libraries/Sydney/en/System.Net.HttpClient.THTTPClient
OpenAPI Initiative——规范仓库https://github.com/OAI/OpenAPI-Specification
OpenAPI 规范——权威 HTML 渲染https://spec.openapis.org/

试用 sgcOpenAPI

下载免费试用版,几分钟内从 OpenAPI 3.x 规范生成您的第一个 Pascal SDK。