sgcREST REST-APIs, nativ in Delphi. OpenAPI inklusive.

Zwei Aufgaben, sieben Klassen. TsgcHTTPRESTServer veröffentlicht eine REST-API mit CORS, /metrics und /health, Mandantenfähigkeit und einem Benutzerspeicher. Eine OpenAPI-Engine stellt eine API direkt aus einem OpenAPI-3.x-Vertrag bereit oder erzeugt den Vertrag aus deiner Delphi-Klasse, und TsgcOpenAPI_Client nutzt jede über OpenAPI beschriebene API. Die sgcWebSockets Core-Runtime ist enthalten.

Veröffentliche deinen ersten Endpunkt in wenigen Zeilen →
  • Delphi 7 bis 13
  • C++ Builder
  • OpenAPI 3.x
  • CORS
  • /metrics und /health
  • Mandantenfähigkeit
  • Voller Quellcode
  • 4Palette-Komponenten: REST-Server, Statistiken, Mandanten und Benutzer
  • 7Klassen insgesamt: REST-Server-Familie, OpenAPI-Engine und Client
  • 4Client-Authentifizierungsverfahren: Basic, Bearer-Token, OAuth2 und JWT
  • 2Eingebaute Endpunkte, /metrics und /health, beide optional
  • 100%Quellcode in jeder Lizenz enthalten
In Aktion sehen

sgcREST in zwei Minuten erleben.

Eine vertonte Vorführung des REST-Servers mit Untertiteln: der HTTP-Server, den du schon kennst, plus die vier Dinge, die eine REST-API am Ende immer braucht. Nichts wird geladen, bevor du auf Play drückst.

sgcREST-Schnellstart

Einen REST-API-Server in Delphi bauen, mit CORS, Live-Statistiken, Mandanten und Benutzern.

  1. Alles geerbtTsgcHTTPRESTServer stammt von TsgcHTTPServer ab: Port, TLS, Authentication, Sitzungen, Kompression, der Thread-Pool, die Firewall und der Rate Limiter.
  2. Alles optionalCORS ist standardmäßig aus, ServerStats und Tenancy sind nicht zugewiesen. Nach einem Upgrade schaltet sich nichts von selbst ein.
  3. CORSListe die erlaubten Origins, Methoden und Header auf, und der Server beantwortet den OPTIONS-Preflight für dich.
  4. Metriken und HealthWeise TsgcHTTPServerStats zu und erhalte /metrics und /health, beide hinter der Authentifizierung des Servers.
  5. MandantenfähigkeitJede Anfrage wird anhand von Host, Pfad, Header oder JWT-Claim einem Mandanten zugeordnet. Handler lesen einfach Tenant.
  6. Ein fertiger BenutzerspeicherKonten, gesalzene Passwort-Hashes und Rollen. Die eingebaute Basic-Prüfung löst jede Anmeldung dagegen auf.
Was enthalten ist

Vier Palette-Komponenten, drei reine Code-Klassen.

Der REST-Server und seine drei Begleiter sind nicht visuelle Komponenten auf der Palette-Seite SGC REST. Die OpenAPI-Server-Engine und der OpenAPI-Client liegen in den Units sgcHTTP_OpenAPI_*: erstellen, konfigurieren und die Methoden direkt aufrufen.

REST-Server · ein Server, drei Begleiter

Ansehen →
  • TsgcHTTPRESTServer
  • TsgcHTTPServerStats
  • TsgcHTTPServer_Tenancy
  • TsgcHTTPServer_Users
  • CORSOptions
  • ServerStats
  • Tenancy
  • Tenant

TsgcHTTPRESTServer erweitert den Standard-TsgcHTTPServer um CORS-Behandlung über CORSOptions und um zwei Eigenschaften für optionale Begleiter. TsgcHTTPServerStats zählt jede Anfrage nach Statusklasse, erfasst Latenz-Minimum, -Durchschnitt und -Maximum und liefert einen /metrics-Endpunkt im Prometheus-Format sowie einen JSON-/health-Endpunkt, mit GetEndpointStats für die Aufschlüsselung pro Route. TsgcHTTPServer_Tenancy ermittelt den Mandanten des Aufrufers aus Hostnamen, Pfadsegment, Anfrage-Header oder JWT-Claim, und Tenant liest das Ergebnis für die gerade bediente Anfrage. TsgcHTTPServer_Users ist ein eigenständiger Speicher für Konten, gesalzene Passwort-Hashes und Rollen.

OpenAPI-Server · Spec-first oder Code-first

Ansehen →
  • TsgcOpenAPIRouteTable
  • TsgcOpenAPIServerContext
  • TsgcOpenAPIServerHandler
  • TsgcOpenAPIJSONValidator
  • TsgcOpenAPICodeFirstScanner
  • RespondJSON

Lade ein OpenAPI-3.0- oder -3.1-Dokument, und die Routentabelle wird aus dessen Abschnitt paths aufgebaut. Eine zugeordnete Anfrage kommt als TsgcOpenAPIServerContext an, mit typisierten Pfad- und Query-Parametern, Body-Helfern und RespondJSON/RespondError, und der Validator prüft Bodies sowie Query- und Pfad-Parameter gegen die JSON-Schemas, die die Spezifikation deklariert. Code-first dreht die Quelle der Wahrheit um: Annotiere eine einfache Delphi-Klasse, und der Scanner erzeugt die Spezifikation.

OpenAPI-Client · jede beschriebene API

Ansehen →
  • TsgcOpenAPI_Client
  • SetBaseURL
  • HTTP_REQUEST
  • HTTP_REQUEST_Async
  • Authentifizierung
  • OnBeforeRequest
  • OnUpload
  • OnDownload

Ein generischer Laufzeit-Client für jeden Endpunkt, den ein OpenAPI-Dokument beschreibt, und die Basisklasse hinter generierten SDKs. Authentifizierung deckt Basic-Authentifizierung und Bearer-Tokens sowie generisches OAuth2 und JWT ab, HTTP_REQUEST trägt den Aufruf, und OnBeforeRequest, OnUpload und OnDownload verfolgen ihn.

Jede Komponente und Eigenschaft ansehen

So funktioniert es

Ein Server, kombinierbare Begleiter.

Die sieben Klassen lassen sich sauber nach Rolle trennen. Der REST-Server trägt den HTTP-Verkehr, drei Begleiter ergänzen, was eine produktive API braucht, und die OpenAPI-Engine macht aus einer Spezifikation, geschrieben oder generiert, eine funktionierende Routentabelle.

Ein TsgcHTTPServer mit Extras

TsgcHTTPRESTServer erbt die Bindungen sowie die TLS- und HTTP/2-Behandlung des einfachen HTTP-Servers, der in jeder sgcWebSockets-Edition enthalten ist, und ergänzt CORS sowie die Begleiter-Eigenschaften, sodass eine REST-API Metriken, Health-Checks und Mandantenfähigkeit ohne separates Framework erhält.

Begleiter, nicht fest eingebaut

Statistiken, Mandanten und Benutzer sind eigene Komponenten. Hänge die an, die eine API braucht, und lass den Rest weg. Ein angehängter, aber nicht konfigurierter Begleiter kostet den Server beim Prüfen nichts.

Spec-first und Code-first, eine Routentabelle

Ob das OpenAPI-Dokument aus einer geladenen Datei stammt oder von TsgcOpenAPICodeFirstScanner.GenerateSpec, das eine annotierte Klasse scannt: dieselbe Routentabelle und derselbe Anfragekontext bedienen beides.

Jeder Callback, den die Spezifikation braucht

Validierungs- und Authentifizierungsereignisse erhalten den geparsten TsgcOpenAPIServerContext, mit PathParams, QueryParams und RespondJSON, und OnException fängt Handler-Fehler ab, bevor sie das Netz erreichen, sodass nichts daran verborgen bleibt, warum ein Aufruf akzeptiert oder abgelehnt wurde.

Sechs Plattformen, kein Add-on

Alle sieben Klassen laufen auf der Standard-Indy-Bibliothek, die mit RAD Studio kommt: Windows Win32 und Win64, Linux64, macOS, iOS und Android. Von Delphi 7 bis RAD Studio 13 und auf C++ Builder.

Die Core-Runtime ist in der Box

Die sgcWebSockets Core-Runtime liefert den HTTP/TLS-Stack, auf dem der REST-Server und jede OpenAPI-Klasse laufen, und die JSON-Schicht, die jede Anfrage und Antwort serialisiert. Ihr voller Quellcode gehört wie alles andere zum Paket.

Schnellstart

Einen Endpunkt veröffentlichen, einen Vertrag veröffentlichen oder einen aufrufen.

Der REST-Server reicht dir die Anfrage direkt weiter. Der OpenAPI-Server liefert dir eine validierte, bereits zugeordnete Operation. Der OpenAPI-Client ruft die Endpunkte anderer auf. Alle drei kompilieren gleich in Delphi 7 bis 13 und 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.json');
  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;
uses
  sgcHTTP_OpenAPI_Client;
var
  APIClient: TsgcOpenAPI_Client;
  Request: TsgcOpenAPIRequest;
  Response: TsgcOpenAPIResponse;
begin
  // 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;
  1. CORS, für dich beantwortetAktiviere CORSOptions, liste die erlaubten Origins, Methoden und Header auf, und der Server beantwortet den OPTIONS-Preflight. Das gilt für deine Handler und für Dateien aus DocumentRoot.
  2. Statistiken mit einer ZuweisungWeise TsgcHTTPServerStats an ServerStats zu und erhalte /metrics und /health. Bleibt es unzugewiesen, werden überhaupt keine Zähler geführt.
  3. Mandanten, bevor dein Code läuftWeise TsgcHTTPServer_Tenancy zu, und jede Anfrage wird zuerst einem Mandanten zugeordnet. Deine Handler lesen einfach Tenant.
  4. Benutzer ohne HandlerWeise TsgcHTTPServer_Users an Authentication.Users zu, und die eingebaute Basic-Prüfung löst jede Anmeldung von selbst auf.
sgcREST-Schnellstart: TsgcHTTPServerStats aktiviert die Endpunkte Metrics und Health, GET /metrics liefert die Anfragezähler und GET /health einen JSON-Status.
Drei Zeilen Einrichtung, dann antworten GET /metrics und GET /health von selbst.

Die vollständige Funktionsmatrix

Vor dem Kauf

Zwei Dinge, die du vorher wissen solltest.

Was sgcREST von dir braucht und was nicht. Beide Antworten sind kurz, und beide stehen auf dieser Seite statt im Kleingedruckten.

eine REST-API veröffentlichen
TsgcHTTPRESTServer        CORS, ServerStats, Tenancy
TsgcHTTPServerStats       /metrics und /health
TsgcHTTPServer_Tenancy    Host, Pfad, Header, JWT-Claim
TsgcHTTPServer_Users      Konten, Hashes, Rollen

aus einem OpenAPI-3.x-Vertrag veröffentlichen
route table + context     Spec-first, Delphi 7 bis 13
code-first scanner        annotierte Klasse, ab XE7

eine API nutzen
TsgcOpenAPI_Client        jede über OpenAPI beschriebene API

TsgcHTTPRESTServer ist ein TsgcHTTPServer
  Nachfahre, er veröffentlicht also über den
  schon genutzten Port, TLS und Authentication.

sgcREST ist in sich geschlossen

Eigenständig, die sgcWebSockets Core-Runtime ist enthalten: der HTTP/TLS-Server- und Client-Stack, auf dem der REST-Server und jede OpenAPI-Klasse laufen, und die JSON-Schicht, die jede Anfrage und Antwort serialisiert. Ein Installer, und sgcREST läuft auf der Standard-Indy-Bibliothek, die mit RAD Studio kommt.

Code-first-OpenAPI braucht Delphi XE7+

Das Erzeugen einer Spezifikation aus einer annotierten Delphi-Klasse stützt sich auf die RTTI, die mit Delphi XE7 kam, daher kompilieren TsgcOpenAPICodeFirstScanner und TsgcOpenAPICodeFirstDispatcher ab XE7. Der REST-Server, seine Begleiter und die Spec-first-Engine laufen auf jedem unterstützten Compiler, Delphi 7 bis 13.

Nichts dazwischen ist eine Blackbox

sgcREST implementiert die REST- und OpenAPI-Schnittstellen, die dein Vertrag beschreibt, statt einen Code-Generator zu kapseln, den du nicht kontrollierst. Anfragen, Validierung und Dispatch sind Methoden und Ereignisse erster Klasse, und voller Quellcode gehört zu jeder Lizenz, sodass sich alles in deinem eigenen Debugger durchlaufen lässt.

Teil von sgcWebSockets

Ein Paket von sgcWebSockets, eigenständig lizenziert.

sgcREST fasst die REST- und OpenAPI-Klassen von sgcWebSockets in einem einzigen Paket zusammen. Jede Lizenz enthält alle sieben Klassen, die sgcWebSockets Core-Runtime, vollen Quellcode, lizenzgebührenfreie Weitergabe und 1 Jahr Updates.

Single

1 Entwicklerlizenz. Nutzung auf jeweils einem Rechner.

€249

Team

2 Entwicklerlizenzen. Nutzung auf jeweils zwei Rechnern.

€399

Site

Unbegrenzte Entwicklerzahl. Alle Rechner im Unternehmen.

€649

Die Verlängerung wird mit einem Rabatt von 50% bis 70% angeboten. Nutzt du bereits sgcWebSockets? Der REST-Server ist ab Professional enthalten, und die Enterprise-Edition enthält auch den OpenAPI-Server, sodass dich deine Edition möglicherweise schon abdeckt, und das All-Access-Bundle enthält alles. Der Test-Installer ist die sgcWebSockets-All-Access-Testversion, daher lassen sich alle sieben Klassen schon heute testen.

Preise ansehen und bestellen
REFERENZEN

Was Entwickler sagen

Vertrauen von Delphi-, C++ Builder-, Lazarus- und .NET-Entwicklern weltweit.

Eure sgcWebSockets-Bibliothek ist sehr nützlich und einfach einzurichten. Macht weiter so!
Simone Moretti Delphi-Entwickler
sgcWebSockets ist großartig und euer Support ist der beste!
Christian Meyer Gründer & CTO
Vielen Dank für eure Hilfe und Unterstützung, ich liebe eure Komponenten.
Mark Steinfeld CTO

REST-APIs, OpenAPI-Verträge, nativer Code.

Ein REST-Server mit CORS, Statistiken, Mandanten und Benutzern, ein OpenAPI-Server, der Spec-first oder Code-first arbeitet, und ein OpenAPI-Client für jede beschriebene API, mit enthaltener sgcWebSockets Core-Runtime und vollem Quellcode in der Box.

Mehr von eSeGeCe

Weitere Produkte von eSeGeCe

sgcREST ist eine der eSeGeCe-Komponentenbibliotheken für Delphi, C++ Builder und .NET. Sie teilen dieselben Konventionen, werden mit vollständigem Quellcode ausgeliefert und lassen sich lizenzgebührenfrei weitergeben.

sgcWebSockets

WebSocket, HTTP/2, MQTT, AMQP, WebRTC, KI und über 30 API-Integrationen für Delphi, C++ Builder, Lazarus und .NET. Hier liegt die Core-Runtime, und die Enterprise-Edition enthält auch den OpenAPI-Server.

sgcHTTP

HTTP-Server, HTTP/2-Client, gRPC-Client sowie Clients für Google Cloud Pub/Sub, Calendar und FCM für Delphi und C++ Builder. Eigenständig, die sgcWebSockets Core Runtime ist enthalten.

sgcAuth

OAuth2- und JWT-Client-Komponenten plus WebAuthn-Passkey-Anmeldung, eine natürliche Ergänzung zum Benutzerspeicher einer REST-API.

sgcAI

KI-, LLM- und MCP-Komponenten für Delphi und C++ Builder. Sieben LLM-Anbieter hinter einer Komponente, dazu MCP, Embeddings und Sprache.

sgcMQ

Client-Komponenten für MQTT, AMQP 0.9.1 und 1.0, Apache Kafka und STOMP für Delphi und C++ Builder. Eigenständig, die sgcWebSockets Core Runtime ist enthalten.

sgcSocial

Client-Komponenten für Telegram und WhatsApp Business für Delphi und C++ Builder. Eigenständig, mit gebündelter sgcWebSockets Core-Runtime.

sgcOpenAPI

OpenAPI-3.x-Parser, nativer Pascal-SDK-Generator und über 1.195 vorgefertigte Cloud-SDKs, für die Offline-Codegenerierung statt eines Laufzeit-Clients.

sgcHTML

Serverseitige HTML- und UI-Komponenten auf Basis von Bootstrap 5 und htmx für Delphi, C++ Builder und .NET.

sgcQUIC

Reiner QUIC-Transport sowie HTTP/3-Client und -Server mit WebTransport. Ein Add-on zu sgcWebSockets Enterprise.

sgcSign

XAdES, PAdES, CAdES und ASiC für Dokumente, Authenticode, ClickOnce, NuGet und VSIX für Code.

sgcPDF

PDF-Dateien erstellen, bearbeiten, ansehen, signieren, schwärzen und validieren in reinem Object Pascal, ganz ohne DLL. Wird eigenständig lizenziert.

sgcBiometrics

Windows Hello, Fingerabdrucksensoren und das Windows Biometric Framework für Delphi und C++ Builder.

sgcIndy

Aktualisierte Indy-TCP/IP-Komponenten mit modernem TLS, IPv6 und HTTP/2 für Delphi 7 bis 13.

Neues aus dem Blog

Alle Beiträge ansehen →

Du siehst gerade die Ansicht REST & OpenAPI von eSeGeCe.

Zeig mir eine andere Perspektive →
30 Tage Geld-zurück-GarantieNicht zufrieden? Fordere innerhalb von 30 Tagen nach dem Kauf eine vollständige Rückerstattung an. Rückerstattungsrichtlinie ansehen