eSeGeCe — Delphi & .NET 向けエンタープライズ通信コンポーネント
注目 · sgcREST

OpenAPI コントラクトからの REST API が、Delphi のネイティブコンポーネントに

3 つのコンポーネントが、2 つの役割をカバーします。TsgcHTTPRESTServer は、CORS、任意で有効化できる /metrics/health のエンドポイント、そしてマルチテナントのリクエスト解決を組み込んだ REST サーバーです。TsgcWSAPIServer_OpenAPILoadFromFile で OpenAPI 3.x のコントラクトを読み込み、すべてのリクエストをそれに照らしてディスパッチ、検証、認証します。TsgcOpenAPI_Client は、OpenAPI で記述された任意の API 向けの型付きクライアントの土台となる基底クラスです。単体で完結しており、sgcWebSockets Core ランタイムが含まれています。

  • 3 つのコンポーネントクラス
  • REST Server · OpenAPI Server · OpenAPI Client
  • CORS、/metrics、/health、マルチテナント対応
  • Delphi 7 から 13 · C++ Builder

2 つのパレットコンポーネントと 1 つのクライアント基底クラス

sgcREST は単体のパッケージです。土台となる sgcWebSockets Core ランタイムを同梱し、すべてのライセンスに完全なソースコードが付属するため、REST のディスパッチと OpenAPI の検証をそのままご自身のデバッガーでステップ実行できます。

2 パレットコンポーネント TsgcHTTPRESTServer は SGC REST ページに、TsgcWSAPIServer_OpenAPI は SGC OpenAPI ページにあります。
3 コンポーネントクラスの総数 REST サーバー、OpenAPI サーバー、そして OpenAPI クライアントの基底クラスです。
2 組み込みエンドポイント /metrics/health です。任意で有効化でき、サーバーがすでに適用している Authentication の背後で提供されます。
1 単体のインストーラー sgcWebSockets Core ランタイムと HTTP/TLS レイヤーが、どちらもパッケージ内に同梱されています。
100% ソースコード同梱 すべてのライセンスに、3 つのコンポーネントすべてと同梱ランタイムの完全なソースが付属します。
sgcREST

Delphi と C++ Builder 向けの REST サーバーおよび OpenAPI サーバー/クライアントコンポーネントです。sgcWebSockets Core ランタイムを同梱した単体パッケージで、完全なソースコードが付属し、ロイヤリティフリーで配布できます。

API を公開する、あるいは利用する

3 つのクラスは方向によって明確に分かれます。REST サーバーと OpenAPI サーバーは、呼び出し元が到達するエンドポイントを公開します。OpenAPI クライアントの基底クラスは、生成された SDK が他者のエンドポイントを呼び出す際に使うものです。

REST Server

CORS、メトリクス、ヘルス、テナンシーを標準搭載

TsgcHTTPRESTServer は sgcWebSockets の HTTP サーバーを拡張し、REST API が日常的に必要とする機能を備えます。クロスオリジンリクエスト向けの CORSOptionsServerStats を通じて任意で有効化できる /metrics/health のエンドポイント、そしてホスト、パス、ヘッダー、または JWT クレームによるマルチテナントのリクエスト解決を行う Tenancy です。Tenant が、解決された値を自分のリクエストハンドラーに公開します。

REST サーバーを見る →
OpenAPI Server

契約を読み込み、すべてのリクエストをディスパッチ・検証

TsgcWSAPIServer_OpenAPILoadFromFile または LoadFromString で OpenAPI 3.x のドキュメントを読み込み、動作するディスパッチャーへと変換します。受信するすべてのリクエストは契約と照合され、オペレーション ID によって自分の OnRequest ハンドラーへルーティングされます。OnValidationErrorOnAuthenticateOnValidateAPIKeyOnValidateBasicOnValidateBearer が、仕様が宣言するセキュリティスキームをカバーし、OnBeforeRequest/OnAfterRequest が呼び出しの前後を挟みます。

OpenAPI サーバーを見る →
OpenAPI Client

生成されるすべての SDK の裏にある、1 つの基底クラス

TsgcOpenAPI_Client は、OpenAPI で記述された任意の API 向けの汎用ランタイムクライアントです。Authentication が Basic 認証、ベアラートークン、汎用 OAuth2、JWT をカバーし、HTTP_REQUESTHTTP_REQUEST_Async が呼び出しを実行します。自分で読み込んだ、または生成した契約に SetBaseURL を指定すれば、すぐに呼び出せます。

できることを見る →
エスケープハッチ

仕様が必要とするすべてのコールバック

OnException が、ハンドラーのエラーをワイヤーに届く前に捕捉し、検証と認証の各イベントはすべて、PathParamsQueryParamsRespondJSON を備えた解析済みの TsgcOpenAPIServerContext を受け取ります。呼び出しが受け入れられた理由も拒否された理由も、何一つ隠されません。

検証の全体像を見る →
クロスプラットフォーム

5 つのプラットフォーム、1 つのランタイム

REST サーバーと OpenAPI サーバーはどちらも TsgcHTTPServer のサブクラスで、OpenAPI クライアントは Core ランタイムの他の部分と同じ HTTPS スタックの上で動作します。Delphi 7 から RAD Studio 13 まで、そして C++ Builder でも。

機能マトリックス →

各コンポーネントのリファレンスページ:

エンドポイントを公開する、あるいは契約を公開する

REST サーバーはリクエストをそのまま渡します。OpenAPI サーバーは、検証済みですでにマッチしたオペレーションを渡します。どちらも Delphi 7 から 13、そして C++ Builder で同じようにコンパイルできます。

uses
  sgcHTTP_REST_Server, sgcHTTP_REST_Server_Stats;
var
  RESTServer: TsgcHTTPRESTServer;
  Stats: TsgcHTTPServerStats;
begin
  // REST server: CORS, health/metrics and tenancy in one component
  RESTServer := TsgcHTTPRESTServer.Create(nil);
  Stats := TsgcHTTPServerStats.Create(nil);
  Stats.Endpoints.Health.Enabled := True;

  RESTServer.Port := 8080;
  RESTServer.CORSOptions.Enabled := True;
  RESTServer.CORSOptions.AllowOrigins := 'https://app.example.com';
  RESTServer.ServerStats := Stats;
  RESTServer.OnCommandGet := RESTServerCommandGet;
  RESTServer.Active := True;
end;

procedure TForm1.RESTServerCommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
  AResponseInfo.ContentText := '{"status":"ok"}';
end;
uses
  sgcWebSocket_Server_API_OpenAPI, sgcHTTP_Server;
var
  OpenAPIServer: TsgcWSAPIServer_OpenAPI;
begin
  // OpenAPI server: load the contract, dispatch by operation id
  OpenAPIServer := TsgcWSAPIServer_OpenAPI.Create(nil);
  OpenAPIServer.Server := sgcHTTPServer1;
  OpenAPIServer.LoadFromFile('petstore.yaml');
  OpenAPIServer.OnRequest := OpenAPIServerRequest;

  sgcHTTPServer1.Port := 8080;
  sgcHTTPServer1.Active := True;
end;

procedure TForm1.OpenAPIServerRequest(Sender: TObject;
  const aOperationId: string; const aContext: TsgcOpenAPIServerContext;
  var Handled: Boolean);
begin
  if aOperationId = 'getPetById' then
  begin
    aContext.RespondJSON(200,
      '{"id":"' + aContext.PathParamAsString('petId') + '","name":"Rex"}');
    Handled := True;
  end;
end;

Object Pascal でも C++ Builder でも同じ形です。完全な機能マトリックス →

最初に知っておきたい 2 つのこと

sgcREST が求めるもの、そして求めないものです。どちらの答えも短く、細かい注記の中ではなく、このページに書いてあります。

3 つのコンポーネント、2 つの役割
コンポーネント                       役割
TsgcHTTPRESTServer                  REST API を公開: CORS、
                                       /metrics、/health、テナンシー
TsgcWSAPIServer_OpenAPI             OpenAPI 3.x コントラクトから
                                       REST API を公開
TsgcOpenAPI_Client                  OpenAPI で記述された任意の API を利用

サーバー側の 2 つのコンポーネントはどちらも TsgcHTTPServer
  のサブクラスなので、他の sgcWebSockets サーバーと
  同じ Port、TLSOptions、Authentication に
  アタッチできます。

sgcREST は単体で完結しています

単体で完結しており、sgcWebSockets Core ランタイムが含まれています。REST サーバーと OpenAPI サーバーがどちらも動作する HTTP/TLS サーバースタックと、OpenAPI クライアントがレスポンスをデコードする JSON レイヤーです。インストーラーは 1 つ、完全なソースコードが箱の中に入っています。

REST サーバーと OpenAPI サーバーは、1 つの基底を共有しています

TsgcHTTPRESTServer と、OpenAPI サーバーがアタッチする HTTP サーバーは、どちらも TsgcHTTPServer のサブクラスです。そのため、どちらが API を公開していても、CORS、TLS、Authentication、リクエストパイプラインは同じように動作します。

OpenAPI クライアントが必要とするのは契約だけです

TsgcOpenAPI_Client は、パス、ヘッダー、認証を OpenAPI ドキュメントから直接解決し、Core ランタイムの素の HTTPS スタック上で動作します。

Delphi と C++ Builder

sgcREST は、Delphi 7 から RAD Studio 13 まで、そして C++ Builder をターゲットにしています。REST サーバーは sgcWebSockets の Professional エディション以上にも含まれており、OpenAPI サーバーとクライアントは既存の sgcOpenAPI パックにも同梱されているため、既存のライセンスですでにカバーされている場合があります。無料体験版インストーラーは sgcWebSockets All-Access の体験版なので、今日にも 3 つのクラスすべてを評価できます。

OpenAPI 3.x CORS マルチテナント対応 /metrics & /health 完全なソース

すべてのコンポーネントとプロパティ →

sgcREST は、制御できないコードジェネレーターをラップするのではなく、契約が記述する REST と OpenAPI のインターフェースを直接実装しているため、リクエスト、検証、ディスパッチはすべて第一級のメソッドとイベントであり、完全なソースコードにより、その間に何もブラックボックスは存在しません。

13 個のライブラリ、1 つのツールボックス

sgcREST は、Delphi、C++ Builder、.NET 向けの eSeGeCe コンポーネントライブラリ 13 製品のひとつです。共通の設計思想を持ち、完全なソースが付属し、ロイヤリティフリーで配布できます。

sgcREST

Delphi と C++ Builder 向けの REST サーバー、OpenAPI サーバー、OpenAPI クライアントコンポーネントです。単体製品で、sgcWebSockets Core ランタイムを同梱しています。

詳しく見る →

sgcHTTP

Delphi と C++ Builder 向けの HTTP/2 クライアント、gRPC クライアント、そして Google Cloud の Pub/Sub、Calendar、FCM クライアントです。単体製品で、sgcWebSockets Core ランタイムを同梱しています。

詳しく見る →

sgcAuth

Delphi と C++ Builder 向けの OAuth2 クライアント、JWT クライアント、WebAuthn 対応。単体製品で、sgcWebSockets Core ランタイムを同梱しています。

詳しく見る →

sgcWebSockets

Delphi、C++ Builder、Lazarus、.NET 向けの WebSocket、HTTP/2、MQTT、AMQP、WebRTC、AI、そして 30 を超える API 統合。Enterprise エディションには gRPC も含まれています。

詳しく見る →

sgcMQ

Delphi と C++ Builder 向けの MQTT、AMQP 0.9.1 および 1.0、Apache Kafka、STOMP のクライアントコンポーネント。単体製品で、sgcWebSockets Core ランタイムを同梱しています。

詳しく見る →

sgcSocial

Delphi と C++ Builder 向けの Telegram および WhatsApp Business のクライアントコンポーネント。単体製品で、sgcWebSockets Core ランタイムを同梱しています。

詳しく見る →

sgcHTML

Delphi、C++ Builder、.NET 向けの、Bootstrap 5 と htmx を基盤とするサーバーサイド HTML / UI コンポーネントです。

詳しく見る →

sgcQUIC

生の QUIC トランスポートと HTTP/3 のクライアントおよびサーバー、WebTransport 対応。sgcWebSockets Enterprise のアドオンです。

詳しく見る →

sgcAI

Delphi と C++ Builder 向けの AI、LLM、MCP コンポーネント。1 つのコンポーネントで 7 社の LLM プロバイダーに対応し、MCP、埋め込み、音声も利用できます。単体製品で、sgcWebSockets Core ランタイムを同梱しています。

詳しく見る →

sgcOpenAPI

OpenAPI 3.x パーサー、ネイティブ Pascal SDK ジェネレーター、OpenAPI サーバーコンポーネント、そして 1,195 以上のビルド済みクラウド SDK。

詳しく見る →

sgcSign

ドキュメントには XAdES、PAdES、CAdES、ASiC、コードには Authenticode、ClickOnce、NuGet、VSIX。

詳しく見る →

sgcBiometrics

Delphi と C++ Builder 向けの Windows Hello、指紋センサー、Windows Biometric Framework。

詳しく見る →

sgcIndy

モダンな TLS、IPv6、HTTP/2 に対応した更新版 Indy TCP/IP コンポーネント。Delphi 7 から 13 まで対応します。

詳しく見る →

価格とライセンスを見る 体験版をダウンロード

開発者の声

世界中の Delphi、C++ Builder、Lazarus、.NET 開発者から信頼されています。

Your sgcWebSockets library is very useful and easy to setup. Keep up the good work!

Simone Moretti Delphi Developer

sgcWebSockets is amazing and your support is the best!

Christian Meyer Founder & CTO

Thanks so much for your help and support, I love your components.

Mark Steinfeld CTO

現在は eSeGeCe の REST & OpenAPI ビューを表示しています。

別の切り口を見る →

REST API、OpenAPI 契約、ネイティブコード

REST サーバー、OpenAPI サーバー、OpenAPI クライアント。sgcWebSockets Core ランタイムを同梱し、完全なソースコードも同梱済みです。