Amazon AWS,280+ 个服务
REST 服务 SDK,涵盖 S3、EC2、Lambda、DynamoDB、SQS、SNS、CloudFormation 等。把单元放进项目,即可用带类型的请求和响应类调用服务。
查看 AWS SDK →将 sgcOpenAPI 指向一份 OpenAPI 3.x 文档。解析器读取它,生成器输出原生 Object Pascal SDK,OpenAPI 服务器组件则把您自己的端点以实时规范的形式重新发布出去。
规范输入,Pascal 输出,两端各有一台服务器。配有解说和字幕。在您按下播放之前不会下载任何内容。
把规范变成 Delphi 代码,再把 Delphi 代码变成运行中的服务器。
无需自己生成任何内容即可开始。四大云平台的即用型 Pascal SDK 已内置于 sgcOpenAPI 中,由官方规范生成并持续更新。
REST 服务 SDK,涵盖 S3、EC2、Lambda、DynamoDB、SQS、SNS、CloudFormation 等。把单元放进项目,即可用带类型的请求和响应类调用服务。
查看 AWS SDK →库中最大的一组。Azure 虚拟机、Blob Storage、Functions、Cosmos DB、Key Vault 以及 Azure 控制平面的其余部分,每一项都是生成的 Pascal 客户端。
查看 Azure SDK →Compute Engine、Cloud Storage、BigQuery、Pub/Sub、Cloud Functions 等。
查看 Google SDK →通过 Graph API 访问 Office 365、Microsoft Teams、OneDrive、Outlook 和 Active Directory。
查看 Microsoft SDK →只要 API 发布了 OpenAPI 或 Swagger 文档,生成器就能把它转换成同样带类型的 Pascal 单元。没有白名单限制。
生成器功能 →Single、Team 和 Site 都包含解析器、代码生成器、OpenAPI 服务器组件和完整的预构建 SDK 库。没有任何内容单独销售。
全部预构建 SDK →实战指南:从公开规范到可编译的 Delphi 客户端
五个步骤,全部在 IDE 内完成。无需 Node.js,没有 Java 代码生成器,也没有要学的模板引擎。
# one input, one output, and you have a unit
> sgcOpenAPI.exe -i "api.github.com.json" -o "github.pas" -a 2
File successfully created github.pas
# -a 2 wires up token auth -u sets the base url
# -x drops operations -p prunes the classes they used
# -s emits a server stub instead of a client
# exit 0 ok, 5 bad input, 6 bad output, 7 not convertible
uses
github; // the unit you just generated
procedure TForm1.btnReposClick(Sender: TObject);
var
oResponse: TsgcOpenAPI_reposlistforauthenticateduser_Response;
oRepo: TsgcOpenAPI_repository_Class;
begin
GetOpenAPIClient.Authentication.Token.BearerToken := 'ghp_...';
oResponse := GetOpenAPIClient.reposlistforauthenticateduser(
'private', 'owner', 'all', 'full_name', '', 100, 1);
try
if oResponse.IsSuccessful then
for oRepo in oResponse.Successful.Items do
Memo1.Lines.Add(oRepo.Full_name)
else
Memo1.Lines.Add(IntToStr(oResponse.ResponseCode) + ' ' +
oResponse.ResponseError);
finally
oResponse.Free;
end;
end;
uses
sgcHTTP_Server, sgcHTTP_OpenAPI_Server, sgcWebSocket_Server_API_OpenAPI;
procedure TForm1.btnStartClick(Sender: TObject);
begin
FServer := TsgcHTTPServer.Create(Self);
FServer.Port := 8080;
FOpenAPI := TsgcWSAPIServer_OpenAPI.Create(Self);
FOpenAPI.OpenAPIOptions.Endpoint.ServeSpec := True;
FOpenAPI.OpenAPIOptions.Endpoint.ServeSwaggerUI := True;
FOpenAPI.OpenAPIOptions.Validation.ValidateRequest := True;
FOpenAPI.LoadFromFile('petstore.json');
FOpenAPI.OnRequest := OnOpenAPIRequest;
FOpenAPI.Server := FServer;
FServer.Active := True;
end;
// one event, dispatched by operation id
procedure TForm1.OnOpenAPIRequest(Sender: TObject;
const aOperationId: string;
const aContext: TsgcOpenAPIServerContext;
var Handled: Boolean);
begin
Handled := True;
if aOperationId = 'getPetById' then
aContext.RespondJSON(200,
FPets.Values[aContext.PathParamAsString('petId')])
else
Handled := False;
end;
-i 指向本地文件或 URL,格式为 JSON 或 YAML。两者都在本地读取,Swagger 2.0 文档同样在本地转换为 OpenAPI 3。TsgcOpenAPI 将文档读入 Paths、Components、Security、Servers、Tags 和 Info,并把无法处理的内容记录在 Warnings 中。外部 $ref 指针由 TsgcOpenAPI_Bundle 预先拉取。TsgcOpenAPI_Parser_Client_Pascal 继承自该读取器,写出一个 Pascal 单元:每个操作一个方法,每个方法一个响应类,每个 schema 一个类,文档中的说明会作为注释保留。Source 文件夹,别无其他。带类型的响应需要 XE7 或更高版本。GetOpenAPIClient,在 Authentication 上设置凭据,然后调用相应操作。基础 URL 已根据文档的 servers 条目写入。生成器继承自读取器,因此您也可以自己创建 TsgcOpenAPI,遍历解析后的模型,并在其上构建自己的工具。解析器组件 →
TsgcWSAPIServer_OpenAPI 挂接到 TsgcHTTPServer,按您加载的文档路由传入的请求,在您的处理程序运行前先行验证,并在同一端口上提供该文档和 Swagger UI。

GET /pets/{petId} 到达您的 OnRequest 处理程序时,aOperationId 已设为 getPetById。GET /openapi.json 返回您加载的文档,GET /docs 打开 Swagger UI,二者均由 Endpoint.ServeSpec 和 Endpoint.ServeSwaggerUI 开启。Endpoint.BasePath 可将这一对端点移到某个前缀之下。

用 LoadFromFile 加载 JSON 契约并按操作 ID 分派,或者用 sgcServiceContract、sgcHttpGet、sgcRoute 和 sgcFromBody 标注一个 Pascal 类,让 TsgcOpenAPICodeFirstScanner 构建文档。Code-First 需要 Delphi XE7 或更高版本。两个演示都位于 Demos\30.Server\。

Validation.ValidateRequest、ValidateRequired 和 ValidateRequestBody 会在您的处理程序运行前,对照文档检查传入的请求。OnValidationError 会给您操作 ID 和失败列表,以及决定是否拒绝该请求的 Continue 标志。

文档中的 securityScheme 条目驱动 OnValidateAPIKey、OnValidateBasic 和 OnValidateBearer。您只需编写凭据查找,组件负责解析请求,并在查找失败时返回正确的状态码。
该服务器运行在同一个 sgcWebSockets HTTP 服务器上,它同时承载您的 WebSocket 端点和静态文件。一个端口,一个 TLS 证书,一条日志流。OpenAPI 服务器组件 →
面向 Delphi 和 C++ Builder 的一个整合产品:OpenAPI 3.x 解析器、原生 Pascal SDK 生成器、OpenAPI 服务器组件,以及 1,195+ 个预构建云 SDK。含完整源代码,部署免版税。按团队规模选择。
一位开发者。解析器、生成器、服务器组件和全部预构建 SDK。
两位开发者。与 Single 是同一个完整产品。
不限开发者人数。与 Single 是同一个完整产品。
sgcOpenAPI 单独许可。解析器、代码生成器、服务器组件和全部 1,195+ 个预构建 SDK 包含在每个层级中。
比较层级与价格受到全球各地 Delphi、C++ Builder、Lazarus 和 .NET 开发者的信赖。
你们的 sgcWebSockets 库非常实用,而且易于设置。请继续保持!
sgcWebSockets 非常出色,你们的支持也是最棒的!
非常感谢你们的帮助和支持,我很喜欢你们的组件。
sgcOpenAPI 是 eSeGeCe 面向 Delphi、C++ Builder 和 .NET 的组件库之一。它们遵循相同的约定,附带完整源代码,部署免版税。
WebSocket、HTTP/2、MQTT、AMQP、WebRTC、AI 以及 30+ API 集成。OpenAPI 服务器组件正是运行在它的 HTTP 服务器之上。
面向 Delphi 和 C++ Builder 的 REST 服务器、OpenAPI 服务器和 OpenAPI 客户端组件。可根据 OpenAPI 3.x 契约发布 REST API,或调用任何由 OpenAPI 描述的 API。独立产品,已包含 sgcWebSockets Core 运行时。
基于 Bootstrap 5 和 htmx 的服务器端 HTML 和 UI 组件。为您生成的 REST 客户端构建管理后台或仪表盘界面,无需 JavaScript 前端。
原生 QUIC 传输,以及支持 WebTransport 的 HTTP/3 客户端和服务器。通过 QUIC/HTTP-3 传输公开您生成的 REST 客户端,降低连接延迟。
面向文档的 XAdES、PAdES、CAdES 和 ASiC,以及面向代码的 Authenticode、ClickOnce、NuGet 和 VSIX。可为您的 API 交换的请求和响应正文签名。
使用纯 Object Pascal 创建、编辑、查看、签名、涂黑并验证 PDF 文件,无需部署任何 DLL。单独许可销售。
更新版 Indy TCP/IP 组件,为 Delphi 7 至 13 提供现代 TLS、IPv6 和 HTTP/2 支持。是生成的客户端之下的传输层。
扩展包、附加组件及更多