sgcREST Funktionsmatrix: REST-Server & OpenAPI | eSeGeCe

sgcREST Funktionsmatrix

Alles, was sgcREST kann, aufgeschlüsselt nach dem REST-Server und seinen Begleitern, der OpenAPI-Server-Engine und der OpenAPI-Client-Familie. Jede Fähigkeit arbeitet in Delphi und C++ Builder identisch, und jede Lizenz enthält den vollständigen Quellcode. Für diesen Launch sind noch keine Komponenten-Unterseiten veröffentlicht, jeder Eintrag unten ist auf dieser Seite in sich abgeschlossen.

REST-Server

CORS, Stats, Tenancy & Users

OpenAPI-Server

Spec-first & code-first

OpenAPI-Client

Jede über OpenAPI beschriebene API konsumieren

Standards & Plattformen

Delphi 7 bis 13, C++ Builder

sgcREST ist in sich geschlossen. Es bringt die sgcWebSockets Core Runtime mit, es ist also kein Add-on, und es läuft auf der Standard-Indy-Bibliothek, die mit RAD Studio ausgeliefert wird.

Code-first OpenAPI braucht Delphi XE7 oder neuer. Das Erzeugen einer Spezifikation aus einer attributierten Delphi-Klasse stützt sich auf RTTI, die mit XE7 kam. Der REST-Server, seine Begleiter und die spec-first-OpenAPI-Engine laufen auf Delphi 7 bis 13.

Sieben Klassen, drei Familien

Vier Komponenten auf der Palettenseite SGC REST, und drei reine Code-Klassen für den OpenAPI-Server und -Client, deklariert in den Units sgcHTTP_REST_Server* und sgcHTTP_OpenAPI_*.

KomponenteKlasseAuf der Palette?Beschreibung
REST ServerTsgcHTTPRESTServerJaREST-API-Server auf Basis von TsgcHTTPServer, mit CORS-Handling und anschließbaren Stats-/Tenancy-Begleitern.
REST Server StatsTsgcHTTPServerStatsJaAnfragezähler, Latenz-Tracking, Prometheus-/metrics und JSON-/health.
REST Server TenancyTsgcHTTPServer_TenancyJaMandantenauflösung nach Host, Pfad, Header oder JWT-Claim.
REST Server UsersTsgcHTTPServer_UsersJaLokaler Kontospeicher: Benutzer hinzufügen, validieren, hashen, mit Rollen-Tags versehen und persistieren.
OpenAPI Server, Spec-FirstTsgcOpenAPIServerHandlerNein, reine Code-KlasseBedient eine API aus einem geladenen OpenAPI-3.0-/3.1-Dokument, mit Anfrage-Validierung.
OpenAPI Server, Code-FirstTsgcOpenAPICodeFirstScannerNein, reine Code-KlasseErzeugt die OpenAPI-Spezifikation aus einer RTTI-attributierten Delphi-Klasse. Braucht Delphi XE7+.
OpenAPI ClientTsgcOpenAPI_ClientNein, reine Code-KlasseGenerischer Laufzeit-Client für jeden über OpenAPI beschriebenen Endpunkt.

CORS, Stats, Tenancy und ein Benutzerspeicher

TsgcHTTPRESTServer ist ein TsgcHTTPServer-Nachfahre, er startet also mit denselben Bindungen und derselben TLS-Handhabung wie jeder sgc-HTTP-Server, und legt die üblichen Extras einer REST-API obendrauf.

FähigkeitAPIHinweise
CORSCORSOptions (Enabled, AllowOrigins, AllowHeaders, AllowMethods)Standardmäßig aus. Preflight-OPTIONS-Anfragen werden automatisch beantwortet, sobald aktiviert.
Stats-BegleiterServerStats: TsgcHTTPServerStatsHänge eine Stats-Komponente an, und jede Anfrage wird gezählt und zeitlich erfasst, ohne Route-Handler anzufassen.
Tenancy-BegleiterTenancy: TsgcHTTPServer_Tenancy, TenantHänge eine Tenancy-Komponente an, um den Mandanten des Aufrufers aufzulösen; Tenant liest das Ergebnis für die aktuelle Anfrage.
AnfragezählerTotalRequests, Status1xx bis Status5xxAuf TsgcHTTPServerStats. Gezählt pro Statusklasse, sobald Antworten gesendet werden.
LatenzLatencyMinMs, LatencyAvgMs, LatencyMaxMsPro Anfrage auf TsgcHTTPServerStats erfasst, zurückgesetzt mit Reset.
Metrics-EndpunktGetMetricsText, IsMetricsRequestPrometheus-Textformat 0.0.4, bedient unter /metrics.
Health-EndpunktGetHealthJSON, IsHealthRequestJSON-Health-Payload unter /health, enthält UptimeSeconds und ActiveConnections.
Stats pro EndpunktGetEndpointStats, EndpointsEin Pfad-/Zähler-Paar pro Endpunkt, für einen Bericht oder eine Admin-Konsole.
MandantenauflösungResolution, ResolveTenantAuf TsgcHTTPServer_Tenancy. Löst nach Host-Suffix, Pfadsegment, Header oder JWT-Claim auf.
MandantenquellenHostSuffix, PathSegmentIndex, HeaderName, ClaimName, DefaultTenantDie Quelle, die für den konfigurierten Resolution-Modus gelesen wird, und der Fallback, wenn sie nichts liefert.
Eigene AuflösungOnResolveTenantÜberschreibe oder erweitere die eingebaute Auflösungslogik.
BenutzerkontenAddUser, DeleteUser, FindUser, ValidateCredentials, SetPassword, EnableUser, UserExistsAuf TsgcHTTPServer_Users. Gesalzene, gehashte Zugangsdaten, nie im Klartext zurückgegeben.
RollenAddRole, RemoveRole, UserHasRole, GetUserRolesFrei definierbare Rollen-Tags pro Konto, geprüft aus einem Route-Handler.
AufzählungCount, GetUserCount, GetUserByIndex, GetUsernamesNur-lese-Ansichten für einen Bericht oder eine Admin-Konsole; Passwort-Hash und Salt sind nie enthalten.
PersistenzLoadUsers, SaveUsers, SaveToFile, LoadFromFile, ExportUsers, ImportUsersStorage.EncryptAtRest verschlüsselt den Speicher; OnLoadUsers/OnSaveUsers tauschen ein eigenes Backend ein.
EreignisseOnStats, OnResolveTenant, OnValidateCredentials, OnFindUser, OnExceptionEin Ereignis pro Begleiter für die Fälle, die die eingebaute Logik nicht abdeckt.

Spec-first-Routing, code-first-Generierung

Beide Ansätze speisen dieselbe Routentabelle und denselben Request-Kontext; nur die Quelle des OpenAPI-Dokuments unterscheidet sich.

FähigkeitAPIHinweise
RoutentabelleTsgcOpenAPIRouteTable (Add, Match)Aus dem paths-Abschnitt einer Spezifikation gebaut; ordnet ein Verb und einen Pfad einer operationId zu.
Request-KontextTsgcOpenAPIServerContext (Request, Response, PathParams, QueryParams)Eine Instanz pro passender Anfrage, freigegeben, wenn die Anfrage endet.
Typisierte ParameterPathParamAsString, PathParamAsInteger, QueryParamAsString, QueryParamAsInteger, QueryParamAsBooleanLiest und konvertiert einen Pfad- oder Query-Wert in einem Aufruf.
Body-ZugriffBodyAsString, BodyAsJSON, HeaderValueParst den Anfrage-Body einmal und cached das Ergebnis.
AntwortenRespondJSON, RespondErrorSchreibt einen JSON-Body mit Statuscode, oder eine strukturierte Fehler-Payload.
Request-LebenszyklusBeforeHandle, AfterHandle, HandleExceptionAuf TsgcOpenAPIServerHandler. Überschreiben, um Logging, Auth-Prüfungen oder eigenes Fehler-Mapping zu ergänzen.
ValidierungTsgcOpenAPIJSONValidatorPrüft Anfrage-Bodys, Query- und Pfad-Parameter gegen die JSON-Schemas, die die Spezifikation deklariert.
SpezifikationserzeugungGenerateSpec, Title, Description, Version, BasePathAuf TsgcOpenAPICodeFirstScanner. Erzeugt ein OpenAPI-3.0-Dokument aus der RTTI einer attributierten Klasse.
VertragsattributesgcServiceContract, sgcRoute, sgcSummary, sgcDescription, sgcTag, sgcResponseKlassen- und methodenweite Attribute, die die erzeugte Spezifikation füllen.
Verb-AttributesgcHttpGet, sgcHttpPost, sgcHttpPut, sgcHttpDelete, sgcHttpPatch, sgcHttpHead, sgcHttpOptionsDeklariert das HTTP-Verb, das eine attributierte Methode beantwortet.
ParameterbindungsgcFromPath, sgcFromQuery, sgcFromHeader, sgcFromBody, sgcRequiredDeklariert, woher jeder Methodenparameter gelesen wird.
DispatchTsgcOpenAPICodeFirstDispatcher (RegisterController, DispatchOperation, IsRegistered)Ruft die für eine operationId registrierte, attributierte Methode direkt auf, keine manuelle if-Kette.
AbhängigkeitDelphi XE7 oder neuerCode-first-Scanning und -Dispatch stützen sich auf System.Rtti, vor XE7 nicht verfügbar. Spec-first hat diese Anforderung nicht.

Ein Laufzeit-Client, jede über OpenAPI beschriebene API

Ein generischer Client für jeden über OpenAPI beschriebenen Endpunkt, mit Basic-Auth, Bearer-Token, generischem OAuth2 und generischem JWT eingebaut.

FähigkeitAPIHinweise
BasisaufrufHTTP_REQUESTAuf TsgcOpenAPI_Client. Trägt ein TsgcOpenAPIRequest-/TsgcOpenAPIResponse-Paar zu jedem Endpunkt.
Basis-URLSetBaseURL, GetBaseURLDer Endpunkt, gegen den jeder relative Pfad in einer Anfrage aufgelöst wird.
Generische AuthentifizierungAuthentication (Basic, Token, OAuth2, JWT)Basic-Auth und Bearer-Token, plus generische OAuth2- und JWT-Flows.
TransportTLSOptions, ProxyOptions, EncodeBodyAsUTF8Standard-TLS- und Proxy-Konfiguration, geteilt mit dem übrigen sgc-HTTP-Stack.
Fortschritt & LoggingOnUpload, OnDownload, Log, LogFileNameVerfolgt große Anfrage-/Antwort-Bodys und protokolliert optional jeden Aufruf in eine Datei.
Request-HookOnBeforeRequestPrüfe oder ändere eine Anfrage, bevor sie gesendet wird.
TLS-HooksOnSSLVerifyPeer, OnSSLGetHandler, OnSSLAfterCreateHandlerZertifikatsprüfung und Handler-Anpassung, geteilt mit dem übrigen sgc-HTTP-Stack.

APIs, Compiler und Zielplattformen

Öffentliche Standards auf der Leitung, und derselbe Quellcode über jeden unterstützten Compiler hinweg.

BereichDetail
OpenAPIOpenAPI 3.0 und 3.1, sowohl für das spec-first-Routing des Servers als auch für die JSON-Schemas, gegen die die Anfrage-Validierung prüft.
Client-AuthentifizierungHTTP-Basic-Authentifizierung und Bearer-Token, plus generisches OAuth2 und JWT.
MetricsPrometheus-Textformat 0.0.4 unter /metrics.
PlattformenWindows Win32, Windows Win64, Linux64, macOS, iOS und Android für alle sieben Klassen.
AbhängigkeitKeine über die mitgelieferte sgcWebSockets Core Runtime hinaus. Kein zusätzliches Add-on für eine der sieben Klassen.
CompilerDelphi und C++ Builder 7 bis 13. Code-first OpenAPI braucht Delphi XE7 oder neuer.
EditionenDie REST-Server-Familie steckt außerdem ab der Professional-Edition in sgcWebSockets, der OpenAPI-Server ab Enterprise, und der OpenAPI-Client ab Standard.
LizenzierungEigenständig. Die sgcWebSockets Core Runtime ist mitgeliefert und der vollständige Quellcode ist enthalten.
Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Baue mit sgcREST

Lade die kostenlose Testversion herunter und stelle deinen ersten REST-Endpunkt oder OpenAPI-Aufruf aus Delphi oder C++ Builder auf die Beine.