Amazon AWS
S3、EC2、Lambda、DynamoDB、SQS、SNS、CloudFormation などを網羅する REST サービス SDK。ユニットをプロジェクトに追加し、型付きのリクエスト / レスポンスクラスでサービスを呼び出すだけです。
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 ライブラリ全体が含まれます。個別販売はありません。
始めるために何かを生成する必要はありません。4 大クラウドプラットフォームは、公式仕様から生成され最新に保たれた、すぐに使える Pascal SDK として sgcOpenAPI に同梱されています。
S3、EC2、Lambda、DynamoDB、SQS、SNS、CloudFormation などを網羅する REST サービス SDK。ユニットをプロジェクトに追加し、型付きのリクエスト / レスポンスクラスでサービスを呼び出すだけです。
AWS の SDK を見る →ライブラリ内で最大のセットです。Azure VM、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 クライアントまでを解説した実践ガイド:
5 つのステップは、すべて IDE の中で完結します。Node.js も、Java 製のコードジェネレーターも、覚えるべきテンプレートエンジンもありません。
OpenAPI 3.x ドキュメントを、ファイル、URL、文字列のいずれかから、JSON でも YAML でも読み込めます。Swagger 1.x と 2.x のファイルは自動的に検出され、OpenAPI 3.x のモデルへ変換されます。
TsgcOpenAPIParser が、外部ファイルや循環参照を含む $ref ポインターを解決し、allOf、oneOf、anyOf をフラット化し、構造上のエラーを行単位で報告します。
TsgcOpenAPIGenerator が、タグごとに 1 クラスへまとめた、強く型付けされた Pascal のクラス、レコード、列挙型を出力し、コードと合わせて PDF と CHM のドキュメントも生成します。
生成されたユニットをプロジェクトに追加します。sgcOpenAPI のランタイム以外に外部依存はなく、Delphi 7 から RAD Studio 13、C++ Builder 2007 から 13 まで対応します。
BaseURL と資格情報を設定して、操作を呼び出すだけです。型安全なメソッド、型付きの結果、そして IDE での完全な IntelliSense を利用できます。
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 を組み込みで提供します。すべては sgcWebSockets の HTTP/2 サーバー上で動作する 1 つの Delphi コンポーネントから行えます。
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 の契約を読み込んでオペレーション ID にハンドラーをバインドすることも、Pascal でハンドラーを登録して、コンポーネントに実行時に OpenAPI ドキュメントを組み立てさせることもできます。
必須フィールド、型変換、列挙値、フォーマット検証、長さと範囲の制限、パターン、スキーマ合成は、すべてハンドラーが動作する前に適用されます。失敗は、フィールド単位の診断情報を含む RFC 7807 の problem details として返されます。
ドキュメント内のすべての securityScheme が自動的に適用されます。資格情報の照会だけを書けば、解析、チャレンジヘッダー、401 と 403 のレスポンスはコンポーネントが処理します。
このサーバーは、WebSocket エンドポイントや静的ファイルをホストしているのと同じ sgcWebSockets の HTTP サーバー上で動作します。ポートも TLS 証明書もログのストリームも 1 つで済みます。
sgcOpenAPI は、Delphi、C++ Builder、.NET 向けの eSeGeCe コンポーネントライブラリ 6 製品のひとつです。共通の設計思想を持ち、完全なソースが付属し、ロイヤリティフリーで配布できます。
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 サーバーを提供します。
詳しく見る →Bootstrap 5 と htmx を基盤とする、サーバーサイド HTML / UI コンポーネント。生成した REST クライアント向けの管理画面やダッシュボードを、JavaScript のフロントエンドなしで構築できます。
詳しく見る →ドキュメントには XAdES、PAdES、CAdES、ASiC、コードには Authenticode、ClickOnce、NuGet、VSIX。API がやり取りするリクエストとレスポンスのボディにも署名できます。
詳しく見る →Delphi と C++ Builder 向けの Windows Hello、指紋センサー、Windows Biometric Framework。API へのアクセスを指紋で保護できます。
詳しく見る →モダンな TLS、IPv6、HTTP/2 に対応した更新版 Indy TCP/IP コンポーネント。Delphi 7 から 13 まで対応し、生成されたクライアントの下でトランスポート層を担います。
詳しく見る →世界中の Delphi、C++ Builder、Lazarus、.NET 開発者から信頼されています。
sgcWebSockets ライブラリはとても便利でセットアップも簡単です。これからも頑張ってください!
sgcWebSockets は素晴らしく、サポートも最高です!
ご支援とサポートに本当に感謝しています。コンポーネントが大好きです。