sgcREST: Delphi、C++ Builder 向け REST API サーバー & OpenAPI コンポーネント
単体で完結する製品 REST Server & OpenAPI

sgcREST: Delphi & C++ Builder 向け REST API サーバー & OpenAPI コンポーネント

2 つの役割を 7 個のクラスでカバーします。TsgcHTTPRESTServer は CORS 処理と、リクエスト統計、マルチテナント対応、ローカルユーザーストアという 3 つのアタッチ可能なコンポーネントを備えた REST API サーバーです。それに加えて OpenAPI エンジンが、仕様から直接 API を提供する(スペックファースト)か、属性を付けた Delphi クラスから仕様を生成する(コードファースト)かを選べます。さらに TsgcOpenAPI_Client は、OpenAPI で記述された任意の API を利用できます。sgcREST は単体で完結しており、すべてのクラスの土台となる sgcWebSockets Core ランタイムを同梱しています。

完全なソースコード
Delphi 7 から 13 & C++ Builder
同梱ランタイム sgcWebSockets Core すべてのクラスの土台となる HTTP、TLS、JSON ランタイム
REST Server TsgcHTTPRESTServer
OpenAPI TsgcOpenAPI_Client
4 パレットコンポーネント REST サーバー、統計、テナンシー、ユーザーがパレットの 1 ページに集約
7 クラスの総数 REST サーバーファミリー、OpenAPI サーバーエンジン、OpenAPI クライアント
4 クライアント認証方式 Basic 認証、ベアラートークン、汎用 OAuth2、JWT を内蔵
100% ソースコード同梱 7 個のクラスすべてと同梱の Core ランタイム
12 か月のアップデート ライセンスが有効な間に公開されるすべてのリリース

最初に知っておきたい 2 点

sgcREST が求めるもの、そして求めないものです。どちらも答えは短くまとまります。

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

単体で完結しており、sgcWebSockets Core ランタイムが含まれています。REST サーバーとすべての OpenAPI クラスが動作する HTTP/TLS のサーバーおよびクライアントスタックと、あらゆるリクエストとレスポンスをシリアライズする JSON レイヤーです。SKU も 1 つ、インストーラーも 1 つで、sgcREST は RAD Studio に同梱されている標準の Indy ライブラリの上で動作します。

すべてのライセンスに完全なソースコードが付属するため、REST サーバーとそのコンパニオン、そして OpenAPI エンジンは、バイナリの中に消えることなく、自分のデバッガでステップ実行できます。

1 つだけバージョン要件があります

コードファーストの OpenAPI には Delphi XE7 以降が必要です

属性を付けた Delphi クラスから OpenAPI 仕様を生成する処理は、Delphi XE7 で追加された RTTI に依存しているため、TsgcOpenAPICodeFirstScannerTsgcOpenAPICodeFirstDispatcher は XE7 以降でコンパイルできます。REST サーバーとそのコンパニオン、そしてすでに手元にある JSON や YAML のドキュメントからルーティングするスペックファーストの OpenAPI エンジンは、対応するすべてのコンパイラ、Delphi 7 から 13 まで動作します。

まだ OpenAPI ドキュメントをお持ちでない場合は、先に Delphi クラスを書き、スキャナーに生成させてください。それこそが、XE7 以降のコードファーストが目指すものです。

4 つのパレットコンポーネントと 3 つのコードオンリークラス

REST サーバーとその 3 つのコンパニオンは、SGC REST パレットページに登録される非ビジュアルコンポーネントで、sgcHTTP_REST_Server* ユニット群で宣言されています。TsgcHTTPRESTServer をフォームに配置するかコードで生成し、必要に応じて ServerStatsTenancy をアタッチします。OpenAPI サーバーエンジンと OpenAPI クライアントクラスは sgcHTTP_OpenAPI_* ユニットにコードオンリーのクラスとして存在し、フォームに配置するものは何もありません。生成して設定し、メソッドを直接呼び出すだけです。

REST Server4 コンポーネント

1 つのサーバーと、必要に応じてアタッチする 3 つのコンパニオン

TsgcHTTPRESTServer は標準の TsgcHTTPServer を拡張し、CORSOptions による CORS 処理と、任意のコンパニオン用の 2 つのプロパティ、ServerStatsTenancy を追加します。TsgcHTTPServerStats は、あらゆるリクエストをステータスクラスごとに数え、レイテンシーの最小・平均・最大を追跡し、Prometheus 形式の /metrics エンドポイントと JSON 形式の /health エンドポイントを提供し、GetEndpointStats でルートごとの内訳も取得できます。TsgcHTTPServer_Tenancy は、ホスト名、パスセグメント、リクエストヘッダー、または JWT クレームから呼び出し元のテナントを解決し、サーバー自身の Tenant プロパティが、処理中のリクエストの結果を読み取ります。TsgcHTTPServer_Users は 4 つ目の独立したコンパニオンで、AddUserValidateCredentials、ロールタグ、ソルト付きパスワードハッシュを備えたローカルアカウントストアです。保存時の暗号化にも対応し、サーバーのプロパティとして接続するのではなく、ルートハンドラーから直接問い合わせます。

OpenAPI ServerAPI を定義する 2 つの方法

すでにある仕様を提供する、あるいはコードから生成する

スペックファーストでは、OpenAPI 3.0 または 3.1 のドキュメントを読み込むと、TsgcOpenAPIRouteTable がその paths セクションから自動的にルートテーブルを構築します。マッチしたリクエストは、パスとクエリパラメータへの型付きアクセス、ボディ用のヘルパー、RespondJSON/RespondError を備えた TsgcOpenAPIServerContext として届きます。TsgcOpenAPIServerHandler は、すべての呼び出しを BeforeHandleAfterHandleHandleException でラップし、TsgcOpenAPIJSONValidator は、仕様が宣言する JSON スキーマに対してボディ、クエリ、パスパラメータを検証します。コードファーストは情報源を逆転させます。sgcServiceContractsgcRoutesgcHttpGet/sgcHttpPostsgcFromPath/sgcFromQuery/sgcFromBody の各属性を素の Delphi クラスに付与すると、TsgcOpenAPICodeFirstScanner.GenerateSpec がその RTTI から直接 OpenAPI ドキュメントを生成します。YAML を手書きする必要はありません。TsgcOpenAPICodeFirstDispatcher と組み合わせれば、属性を付けたメソッドが各オペレーションに対して直接呼び出され、手動のディスパッチチェーンは不要です。コードファーストには Delphi XE7 以降が必要です。

TsgcOpenAPIServerHandler TsgcOpenAPICodeFirstScanner コードファーストには Delphi XE7+ が必要
OpenAPI Client1 クラス

OpenAPI で記述された任意の API を利用

TsgcOpenAPI_Client は、OpenAPI ドキュメントが記述するあらゆるエンドポイント向けの汎用ランタイムクライアントです。HTTP_REQUEST が呼び出しを担い、Authentication は Basic 認証とベアラートークンに加えて汎用の OAuth2 と JWT をカバーし、OnBeforeRequestOnUploadOnDownload がその過程を追跡します。

1 つのサーバー、組み合わせ可能なコンパニオン

7 個のクラスは役割によって明確に分かれます。REST サーバーが HTTP トラフィックを担い、3 つのコンパニオンが本番 API に必要なものを追加し、OpenAPI エンジンが手書きか生成かを問わず仕様を動作するルートテーブルへと変換します。

REST サーバーは、機能を追加した TsgcHTTPServer です

TsgcHTTPRESTServer は、sgcWebSockets のすべてのエディションに含まれる素の HTTP サーバーのバインディング、TLS、HTTP/2 処理を継承し、その上に CORS 処理と 2 つのアタッチ可能なコンパニオンを追加します。これにより、別のフレームワークを使うことなく、REST API にメトリクス、ヘルスチェック、マルチテナント対応が加わります。

統計、テナンシー、ユーザーは、組み込みの機能ではなくコンパニオンです

TsgcHTTPServerStatsTsgcHTTPServer_TenancyTsgcHTTPServer_Users は独立したコンポーネントです。特定の API に必要なものだけをアタッチし、それ以外は外しておけます。アタッチしたものの設定していないコンパニオンは、サーバーにチェックのコストすらかけません。

スペックファーストとコードファーストは、同じルートテーブルに行き着きます

OpenAPI ドキュメントが読み込んだファイルに由来するものであれ、TsgcOpenAPICodeFirstScanner.GenerateSpec が属性付きクラスをスキャンして生成したものであれ、どちらも JSON であり、同じルートテーブルとリクエストコンテキストがどちらも処理します。Delphi XE7 以降を必要とするのは、コードファーストのスキャナー自体だけです。

Core ランタイムは箱の中に入っています

単体で完結しており、sgcWebSockets Core ランタイムが含まれています。REST サーバーとすべての OpenAPI クラスが動作する HTTP/TLS スタックを提供し、その完全なソースコードも他のすべてと同様にパッケージの一部です。

REST サーバーと OpenAPI クライアントを並べて

REST サーバーは sgcHTTP_REST_Server で、OpenAPI クライアントは sgcHTTP_OpenAPI_Client で宣言されています。同じコードが Delphi 7 から 13、そして C++ Builder でコンパイルできます。

uses
  sgcHTTP_REST_Server, sgcHTTP_OpenAPI_Client;

var
  RESTServer: TsgcHTTPRESTServer;
  APIClient: TsgcOpenAPI_Client;
  Request: TsgcOpenAPIRequest;
  Response: TsgcOpenAPIResponse;
begin
  // REST server: CORS on, stats and health/metrics wired in
  RESTServer := TsgcHTTPRESTServer.Create(nil);
  RESTServer.Bindings.Add.Port := 8080;
  RESTServer.CORSOptions.Enabled := True;
  RESTServer.ServerStats := HTTPServerStats1;
  RESTServer.Active := True;

  // OpenAPI client: call any OpenAPI-described API with basic auth
  APIClient := TsgcOpenAPI_Client.Create(nil);
  APIClient.SetBaseURL('https://api.example.com');
  APIClient.Authentication.Basic.Enabled := True;
  APIClient.Authentication.Basic.Username := 'apiuser';
  APIClient.Authentication.Basic.Password := '...';

  Request := TsgcOpenAPIRequest.Create;
  Response := TsgcOpenAPIResponse.Create;
  APIClient.HTTP_REQUEST(Request, Response);
end;
// include: sgcHTTP_REST_Server.hpp, sgcHTTP_OpenAPI_Client.hpp

// REST server: CORS on, stats and health/metrics wired in
TsgcHTTPRESTServer *RESTServer = new TsgcHTTPRESTServer(this);
RESTServer->Bindings->Add()->Port = 8080;
RESTServer->CORSOptions->Enabled = true;
RESTServer->ServerStats = HTTPServerStats1;
RESTServer->Active = true;

// OpenAPI client: call any OpenAPI-described API with basic auth
TsgcOpenAPI_Client *APIClient = new TsgcOpenAPI_Client(this);
APIClient->SetBaseURL("https://api.example.com");
APIClient->Authentication->Basic->Enabled = true;
APIClient->Authentication->Basic->Username = "apiuser";
APIClient->Authentication->Basic->Password = "...";

TsgcOpenAPIRequest *Request = new TsgcOpenAPIRequest();
TsgcOpenAPIResponse *Response = new TsgcOpenAPIResponse();
APIClient->HTTP_REQUEST(Request, Response);

アドオン不要、すべてのプラットフォームに対応

7 個のクラスすべてが、RAD Studio に同梱されている標準の Indy ライブラリで動作するため、sgcWebSockets がすでにカバーするプラットフォーム範囲をそのままアドオンなしで利用できます。

REST Server ファミリー TsgcHTTPRESTServer、ServerStats、Tenancy & Users
Windows Win32 Windows Win64 Linux64 macOS iOS Android
OpenAPI サーバー & クライアントファミリー スペックファースト、コードファースト、OpenAPI クライアントクラス
Windows Win32 Windows Win64 Linux64 macOS iOS Android
IDE 対応 ソースツリーは 1 つで、設計時パッケージはバージョンごとに用意されています
Delphi 7 から 13 C++ Builder
コードファーストの OpenAPI Delphi XE7 で追加された RTTI が必要です
Delphi XE7 から 13
体験版インストーラー sgcWebSockets All-Access の体験版には sgcREST コンポーネントが含まれています
1 つのダウンロードで 7 個のクラスすべて

体験版インストーラーをダウンロード →

単体で完結するパッケージ

sgcREST は単体でライセンスされ、開発者 1 名向けの €249 から始められます。すべてのライセンスに、完全なソースコード、1 年間のアップデート、更新時 50% から 70% の割引が含まれます。パック 1 つの更新で 50%、2 つで 60%、3 つ以上で 70% になります。sgcAI、sgcMQ、sgcSocial、sgcAuth、sgcHTTP、sgcREST はそれぞれ 1 パックとして数えます。sgcREST は All-Access バンドルにも含まれています。

sgcREST

€249

Single、Team、Site の各ライセンスをご用意しています。

  • CORS、統計、テナンシー、ユーザーを備えた REST サーバー
  • スペックファースト & コードファーストの OpenAPI サーバー
  • OpenAPI で記述された任意の API に対応する OpenAPI クライアント
  • sgcWebSockets Core ランタイムを同梱
  • Delphi 7 から 13 & C++ Builder
  • 完全なソースコード
  • 1 年間のアップデート

チェックアウト時に追加・削除するアドオンはありません。sgcREST は RAD Studio に同梱されている標準の Indy ライブラリの上で動作します。

購入手続きには 2 つの項目が表示されます。金額 0 で計上される sgcWebSockets Core ランタイムの利用権と、sgcREST パック本体です。価格の詳細はこちら

3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
30日間返金保証ご満足いただけない場合は、ご購入から30日以内に全額返金をリクエストできます。 返金ポリシーを見る

REST API と OpenAPI を、ネイティブコードにそのまま

統計、マルチテナント対応、ユーザーを備えた REST サーバー、スペックファーストでもコードファーストでも動作する OpenAPI サーバー、OpenAPI で記述された任意の API に対応する OpenAPI クライアント。ランタイムを同梱し、完全なソースコードも同梱済みです。All-Access の体験版インストーラーをダウンロードして、今日にも 7 個のクラスすべてを試してみてください。

eSeGeCe のその他の製品

sgcREST と、Delphi、C++ Builder、.NET 向けの他のコンポーネントライブラリを組み合わせてご利用いただけます。

sgcWebSockets

フルライブラリです。WebSocket のクライアントとサーバー、HTTP/2、gRPC、IoT、P2P、AI の各コンポーネントを収録しています。Enterprise エディションには OpenAPI サーバーも含まれています。

詳しく見る →

sgcHTTP

HTTP/2、gRPC、そして Google Cloud の Pub/Sub、Calendar、Firebase Cloud Messaging のクライアントコンポーネントで、Core ランタイムを同梱しています。

詳しく見る →

sgcAuth

OAuth2 クライアント、JWT クライアント、そして WebAuthn パスキーサインイン。REST API のユーザーストアと自然に組み合わさります。

詳しく見る →

sgcAI

AI、LLM、MCP のコンポーネントです。1 つのチャットコンポーネントで OpenAI、Anthropic、Gemini、DeepSeek、Ollama、Grok、Mistral に接続できます。

詳しく見る →

sgcMQ

ネイティブな MQTT 3.1.1/5.0、AMQP 0.9.1、AMQP 1.0、Apache Kafka、STOMP のクライアントコンポーネントで、Core ランタイムを同梱しています。

詳しく見る →

sgcOpenAPI

別に同梱される製品です。OpenAPI 3.x パーサー、ネイティブ Pascal SDK ジェネレーター、1,195 を超えるビルド済みクラウド SDK を、ランタイムクライアントではなくオフラインのコード生成として提供します。

詳しく見る →