Amazon AWS、280 以上のサービス
S3、EC2、Lambda、DynamoDB、SQS、SNS、CloudFormation などを網羅する REST サービス SDK。ユニットをプロジェクトに追加し、型付きのリクエスト / レスポンスクラスでサービスを呼び出すだけです。
AWS の SDK を見る →sgcOpenAPI に OpenAPI 3.x ドキュメントを指定するだけです。パーサーが読み込み、ジェネレーターがネイティブな Object Pascal SDK を出力し、OpenAPI サーバーコンポーネントが自分のエンドポイントを動く仕様として公開します。
仕様を入れれば Pascal が出てきて、どちら側にもサーバーを立てられます。ナレーションと字幕付きです。再生ボタンを押すまで何もダウンロードされません。
仕様を Delphi のコードに変え、Delphi のコードを動くサーバーに変えます。
始めるために何かを生成する必要はありません。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 ユニットへ変換します。許可リストはありません。
ジェネレーターの機能 →Single、Team、Site のいずれにも、パーサー、コードジェネレーター、OpenAPI サーバーコンポーネント、ビルド済み SDK ライブラリのすべてが含まれます。別売りはありません。
ビルド済み SDK 一覧 →公開仕様からコンパイル可能な Delphi クライアントまでの実践ガイド
5 つのステップは、すべて 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 のユニットを 1 つ書き出します。オペレーションごとに 1 メソッド、メソッドごとに 1 つのレスポンスクラス、スキーマごとに 1 クラスで、ドキュメントの説明はコメントとして残ります。Source フォルダーだけで、Delphi 7 から RAD Studio 13 まで対応します。型付きのレスポンスには XE7 以降が必要です。GetOpenAPIClient を呼び、Authentication に資格情報を設定して、操作を呼び出します。ベース URL は、ドキュメントの servers エントリからすでに埋め込まれています。ジェネレーターはリーダーを継承しているので、TsgcOpenAPI を自分で生成し、解析済みのモデルをたどって、その上に独自のツールを構築することもできます。 パーサーコンポーネント →
TsgcWSAPIServer_OpenAPI は TsgcHTTPServer に接続し、読み込んだドキュメントに照らして受信リクエストをルーティングし、ハンドラーが動く前に検証して、同じポートからドキュメントと Swagger UI を提供します。

GET /pets/{petId} は、aOperationId に getPetById が設定された状態で OnRequest ハンドラーに届きます。GET /openapi.json は読み込んだドキュメントを返し、GET /docs は Swagger UI を開きます。どちらも Endpoint.ServeSpec と Endpoint.ServeSwaggerUI で有効になります。Endpoint.BasePath を使うと、この 2 つをプレフィックスの下に移せます。

LoadFromFile で JSON の契約を読み込み、オペレーション ID で処理を振り分けることも、Pascal クラスに sgcServiceContract、sgcHttpGet、sgcRoute、sgcFromBody を付けて、TsgcOpenAPICodeFirstScanner にドキュメントを作らせることもできます。Code-First には Delphi XE7 以降が必要です。どちらのデモも Demos\30.Server\ に含まれています。

Validation.ValidateRequest、ValidateRequired、ValidateRequestBody が、ハンドラーが動く前に受信リクエストをドキュメントと突き合わせます。OnValidationError では、オペレーション ID と失敗の一覧、そしてリクエストを拒否するかどうかを決める Continue フラグを受け取れます。

ドキュメント内の securityScheme エントリが OnValidateAPIKey、OnValidateBasic、OnValidateBearer を動かします。資格情報の照会だけを書けば、コンポーネントがリクエストを解析し、照会が失敗したときは適切なステータスで応答します。
このサーバーは、WebSocket エンドポイントや静的ファイルをホストしているのと同じ sgcWebSockets の HTTP サーバー上で動作します。ポートも TLS 証明書もログのストリームも 1 つで済みます。 OpenAPI サーバーコンポーネント →
Delphi と C++ Builder 向けの 1 つのバンドル製品です。OpenAPI 3.x パーサー、ネイティブ Pascal SDK ジェネレーター、OpenAPI サーバーコンポーネント、1,195 以上のビルド済みクラウド SDK が含まれます。ソースコード付き、ロイヤリティフリーで配布できます。チームの人数に合わせてお選びください。
開発者 1 人。パーサー、ジェネレーター、サーバーコンポーネント、すべてのビルド済み SDK。
開発者 2 人。Single と同じ完全な製品です。
開発者数は無制限。Single と同じ完全な製品です。
sgcOpenAPI は単独でライセンスされます。パーサー、コードジェネレーター、サーバーコンポーネント、1,195 以上のビルド済み SDK のすべてが、どのティアにも含まれます。
ティアと価格を比較する世界中の Delphi、C++ Builder、Lazarus、.NET 開発者から信頼されています。
sgcWebSockets ライブラリはとても便利でセットアップも簡単です。これからも頑張ってください!
sgcWebSockets は素晴らしく、サポートも最高です!
ご支援とサポートに本当に感謝しています。コンポーネントが大好きです。
sgcOpenAPI は、Delphi、C++ Builder、.NET 向けの eSeGeCe コンポーネントライブラリの 1 つです。規約が共通で、ソースコードが付属し、ロイヤリティフリーで配布できます。
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 トランスポートと HTTP/3 のクライアントおよびサーバー、WebTransport 対応。生成した REST クライアントを QUIC / HTTP-3 トランスポート経由で公開し、接続の待機時間を短縮します。
ドキュメントには XAdES、PAdES、CAdES、ASiC、コードには Authenticode、ClickOnce、NuGet、VSIX。API がやり取りするリクエストとレスポンスのボディにも署名できます。
PDF ファイルの作成、編集、表示、署名、墨消し、検証を純粋な Object Pascal で提供します。DLL の配布は不要で、単体でライセンスされます。
モダンな TLS、IPv6、HTTP/2 に対応した更新版 Indy TCP/IP コンポーネント。Delphi 7 から 13 まで対応し、生成されたクライアントの下でトランスポート層を担います。
パック、アドオンなど