Amazon AWS
REST 服务 SDK,涵盖 S3、EC2、Lambda、DynamoDB、SQS、SNS、CloudFormation 等。把单元加入项目,就能用类型化的请求和响应类调用服务。
查看 AWS SDK →
把 sgcOpenAPI 指向一份 OpenAPI 3.x 文档。解析器读取它,生成器输出一个原生的 Object Pascal SDK,OpenAPI 服务器组件则把您自己的端点重新发布为一份实时规范。您也可以完全跳过生成这一步,因为面向 AWS、Azure、Google Cloud 和 Microsoft Graph 的 1,195+ 个 SDK 已经构建完成并随产品附带。
sgcOpenAPI 的每个等级,Single、Team 和 Site,都包含解析器、代码生成器、OpenAPI 服务器组件以及整个预构建 SDK 库。没有任何一项需要单独购买。
开始使用之前,您不需要生成任何东西。四大云平台以开箱即用的 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 单元。没有白名单限制。
生成器功能 →实战指南,从一份公开规范到一个可编译的 Delphi 客户端:
五个步骤,全部在 IDE 内完成。不需要 Node.js,不需要 Java 代码生成器,也不需要学习任何模板引擎。
从文件、URL 或字符串加载一份 OpenAPI 3.x 文档,JSON 或 YAML 均可。Swagger 1.x 和 2.x 文件会被自动识别,并转换为 OpenAPI 3.x 模型。
TsgcOpenAPIParser 解析 $ref 指针,包括外部文件和循环引用,展平 allOf、oneOf 和 anyOf,并以行级细节报告结构错误。
TsgcOpenAPIGenerator 输出强类型的 Pascal 类、记录和枚举,按 tag 每个一类分组,并在代码旁附带 PDF 和 CHM 文档。
把生成的单元加入项目。除了 sgcOpenAPI 运行时之外没有任何外部依赖,可用于 Delphi 7 到 RAD Studio 13,以及 C++ Builder 2007 到 13。
设置 BaseURL,设置凭据,然后调用操作。类型安全的方法、类型化的结果,以及 IDE 中完整的代码提示。
uses
sgcOpenAPI_Parser, sgcOpenAPI_Generator;
var
vParser: TsgcOpenAPIParser;
vGen: TsgcOpenAPIGenerator;
begin
vParser := TsgcOpenAPIParser.Create(nil);
try
vParser.LoadFromFile('C:\specs\github\api.github.com.json');
Memo1.Lines.Add(Format('GitHub spec: %d paths, %d schemas',
[vParser.Paths.Count, vParser.Schemas.Count]));
vGen := TsgcOpenAPIGenerator.Create(nil);
try
vGen.Parser := vParser;
vGen.OutputUnit := 'sgcOpenAPI_GitHub';
vGen.OutputFolder := 'C:\Generated\GitHub';
vGen.GroupBy := gbTag; // one class per tag
vGen.Generate;
finally
vGen.Free;
end;
finally
vParser.Free;
end;
end;
uses
sgcOpenAPI_PetStore; // Generated from petstore.yaml
procedure TForm1.btnGetPetClick(Sender: TObject);
var
Client: TsgcOpenAPI_PetStoreClient;
Pet: TsgcOpenAPI_Pet;
begin
Client := TsgcOpenAPI_PetStoreClient.Create(nil);
try
Client.BaseURL := 'https://petstore.swagger.io/v2';
Client.ApiKey := 'your-api-key';
// Type-safe API call with IntelliSense
Pet := Client.GetPetById(42);
try
Memo1.Lines.Add('Name: ' + Pet.Name);
Memo1.Lines.Add('Status: ' + Pet.Status);
Memo1.Lines.Add('Category: ' + Pet.Category.Name);
finally
Pet.Free;
end;
finally
Client.Free;
end;
end;
解析器和生成器是两个独立的组件,因此您也可以自己遍历解析后的模型,在它之上构建属于自己的工具。解析器组件 →
TsgcOpenAPIServer 发布一份实时的 OpenAPI 3.x 文档,按规范路由传入的请求,对双向的负载进行校验,并内置 Swagger UI 和 Redoc,这一切都由一个 Delphi 组件完成,运行在 sgcWebSockets 的 HTTP/2 服务器之上。
uses
sgcOpenAPI_Server, sgcOpenAPI_Types, sgcHTTP_Server;
procedure TForm1.FormCreate(Sender: TObject);
begin
FServer := TsgcOpenAPIServer.Create(nil);
FServer.HTTPServer := sgcHTTPServer1;
FServer.Spec.LoadFromFile('petstore.yaml');
FServer.PublishSpecPath := '/openapi.json';
FServer.SwaggerUIPath := '/docs';
FServer.RedocPath := '/redoc';
// Bind an operation declared in the spec
FServer.OnOperation_getPetById :=
procedure(const Ctx: TsgcOpenAPIContext)
var
oPet: TJSONObject;
begin
oPet := TJSONObject.Create;
oPet.AddPair('id', Ctx.PathParams['petId']);
oPet.AddPair('name', 'Rex');
oPet.AddPair('status', 'available');
Ctx.RespondJSON(200, oPet);
end;
sgcHTTPServer1.Port := 8080;
sgcHTTPServer1.Active := True;
end;
GET /pets/{petId} 会运行上面的处理程序。GET /openapi.json 返回这份实时文档。GET /docs 打开 Swagger UI,GET /redoc 打开 Redoc。如果 HTTP 服务器已经配置好,HTTP/2 和 TLS 也已经启用。
加载一份 YAML 或 JSON 契约,把处理程序绑定到 operation ID;或者在 Pascal 中注册处理程序,让组件在运行时构建出 OpenAPI 文档。
必填字段、类型转换、枚举成员、格式校验器、长度和范围限制、正则模式以及 schema 组合,全部在处理程序运行之前完成校验。失败会以 RFC 7807 problem details 的形式返回,并附带字段级诊断信息。
文档中的每一个 securityScheme 都会被自动强制执行。您只需编写凭据查找逻辑,解析、质询头以及 401 和 403 响应都由组件完成。
该服务器运行在承载您 WebSocket 端点和静态文件的同一个 sgcWebSockets HTTP 服务器上。一个端口,一份 TLS 证书,一条日志流。
sgcOpenAPI 是 eSeGeCe 面向 Delphi、C++ Builder 和 .NET 的六个组件库之一。它们共享同样的约定,提供完整源代码,并可免版税部署。
OpenAPI 3.x 解析器、原生 Pascal SDK 生成器、OpenAPI 服务器组件,以及面向 AWS、Azure、Google Cloud 和 Microsoft Graph 的 1,195+ 预构建 SDK。
了解更多 →WebSocket、HTTP/2、HTTP/3、MQTT、AMQP、WebRTC、AI 及 30+ API 集成。OpenAPI 服务器组件所运行的 HTTP 服务器正来自于此。
了解更多 →文档使用 XAdES、PAdES、CAdES 和 ASiC,代码使用 Authenticode、ClickOnce、NuGet 和 VSIX。为您的 API 往来的请求和响应正文签名。
了解更多 →面向 Delphi 和 C++ Builder 的 Windows Hello、指纹传感器和 Windows 生物特征框架。用指纹为 API 访问加一道关卡。
了解更多 →受到全球各地 Delphi、C++ Builder、Lazarus 和 .NET 开发者的信赖。
你们的 sgcWebSockets 库非常实用,而且易于设置。请继续保持!
sgcWebSockets 非常出色,你们的支持也是最棒的!
非常感谢你们的帮助和支持,我很喜欢你们的组件。