sgcREST-functiematrix: REST-server & OpenAPI | eSeGeCe

sgcREST-functiematrix

Alles wat sgcREST doet, uitgesplitst over de REST-server en zijn companions, de OpenAPI-serverengine en de OpenAPI-clientfamilie. Elke mogelijkheid werkt hetzelfde in Delphi en C++ Builder, en elke licentie bevat de volledige broncode. Voor deze launch zijn er nog geen aparte componentpagina's gepubliceerd, elk onderdeel hieronder staat op zichzelf op deze pagina.

REST-server

CORS, stats, tenancy & gebruikers

OpenAPI-server

Spec-first & code-first

OpenAPI-client

Consumeer elke OpenAPI-beschreven API

Standaarden & platforms

Delphi 7 tot 13, C++ Builder

sgcREST is zelfstandig. Het wordt geleverd met de sgcWebSockets Core runtime inbegrepen, dus het is geen add-on, en het draait op de standaard Indy-bibliotheek die met RAD Studio wordt meegeleverd.

Code-first OpenAPI heeft Delphi XE7 of hoger nodig. Het genereren van een spec vanuit een geannoteerde Delphi-klasse steunt op RTTI die in XE7 is geïntroduceerd. De REST-server, zijn companions en de spec-first OpenAPI-engine draaien op Delphi 7 tot 13.

Zeven klassen, drie families

Vier componenten op de paletpagina SGC REST, en drie code-only OpenAPI-server- en clientklassen, gedeclareerd in de sgcHTTP_REST_Server*- en sgcHTTP_OpenAPI_*-units.

ComponentKlassePalet?Beschrijving
REST-serverTsgcHTTPRESTServerJaREST API-server gebouwd op TsgcHTTPServer, met CORS-afhandeling en koppelbare stats-/tenancy-companions.
REST-server StatsTsgcHTTPServerStatsJaRequesttellers, latency-tracking, Prometheus-/metrics en JSON-/health.
REST-server TenancyTsgcHTTPServer_TenancyJaMulti-tenant resolutie op host, pad, header of JWT-claim.
REST-server UsersTsgcHTTPServer_UsersJaLokale accountopslag: gebruikers toevoegen, valideren, hashen, roltaggen en persisteren.
OpenAPI-server, spec-firstTsgcOpenAPIServerHandlerNee, code-onlyServeert een API vanuit een geladen OpenAPI 3.0/3.1-document, met requestvalidatie.
OpenAPI-server, code-firstTsgcOpenAPICodeFirstScannerNee, code-onlyGenereert de OpenAPI-spec vanuit een RTTI-geannoteerde Delphi-klasse. Heeft Delphi XE7+ nodig.
OpenAPI-clientTsgcOpenAPI_ClientNee, code-onlyGenerieke runtimeclient voor elk OpenAPI-beschreven endpoint.

CORS, stats, tenancy en een gebruikersopslag

TsgcHTTPRESTServer is een afstammeling van TsgcHTTPServer, dus hij start vanuit dezelfde bindings en TLS-afhandeling die elke sgc HTTP-server deelt, en legt daar de gebruikelijke extra's van een REST API bovenop.

MogelijkheidAPIOpmerkingen
CORSCORSOptions (Enabled, AllowOrigins, AllowHeaders, AllowMethods)Standaard uit. Preflight-OPTIONS-requests worden automatisch beantwoord zodra dit is ingeschakeld.
Stats-companionServerStats: TsgcHTTPServerStatsKoppel een stats-component en elk verzoek wordt geteld en getimed zonder de routehandlers aan te raken.
Tenancy-companionTenancy: TsgcHTTPServer_Tenancy, TenantKoppel een tenancy-component om de tenant van de aanroeper te herleiden; Tenant leest het resultaat voor het huidige verzoek.
RequesttellersTotalRequests, Status1xx tot Status5xxOp TsgcHTTPServerStats. Geteld per statusklasse zodra responses worden verstuurd.
LatencyLatencyMinMs, LatencyAvgMs, LatencyMaxMsBijgehouden per verzoek op TsgcHTTPServerStats, gereset met Reset.
Metrics-endpointGetMetricsText, IsMetricsRequestPrometheus text exposition format 0.0.4, geserveerd op /metrics.
Health-endpointGetHealthJSON, IsHealthRequestJSON-healthpayload geserveerd op /health, inclusief UptimeSeconds en ActiveConnections.
Statistieken per endpointGetEndpointStats, EndpointsEén pad-/telpaar per endpoint, voor een rapport of een adminconsole.
Tenant-resolutieResolution, ResolveTenantOp TsgcHTTPServer_Tenancy. Herleidt op hostsuffix, padsegment, header of JWT-claim.
Tenant-bronnenHostSuffix, PathSegmentIndex, HeaderName, ClaimName, DefaultTenantDe bron die wordt gelezen voor de geconfigureerde Resolution-modus, en de fallback wanneer die niets oplevert.
Aangepaste resolutieOnResolveTenantOverride of breid de ingebouwde resolutielogica uit.
GebruikersaccountsAddUser, DeleteUser, FindUser, ValidateCredentials, SetPassword, EnableUser, UserExistsOp TsgcHTTPServer_Users. Gesalte, gehashte inloggegevens, nooit in platte vorm teruggegeven.
RollenAddRole, RemoveRole, UserHasRole, GetUserRolesVrije roltags per account, gecontroleerd vanuit een routehandler.
EnumeratieCount, GetUserCount, GetUserByIndex, GetUsernamesAlleen-lezen weergaven voor een rapport of een adminconsole; wachtwoordhash en salt worden nooit meegegeven.
PersistentieLoadUsers, SaveUsers, SaveToFile, LoadFromFile, ExportUsers, ImportUsersStorage.EncryptAtRest versleutelt de opslag; OnLoadUsers/OnSaveUsers wisselen een aangepaste backend in.
EventsOnStats, OnResolveTenant, OnValidateCredentials, OnFindUser, OnExceptionEén event per companion voor de gevallen die de ingebouwde logica niet dekt.

Spec-first routing, code-first generatie

Beide aanpakken voeden dezelfde routetabel en request context; alleen de bron van het OpenAPI-document verschilt.

MogelijkheidAPIOpmerkingen
RoutetabelTsgcOpenAPIRouteTable (Add, Match)Opgebouwd vanuit de paths-sectie van een spec; matcht een werkwoord en een pad aan een operationId.
Request contextTsgcOpenAPIServerContext (Request, Response, PathParams, QueryParams)Eén instantie per gematcht verzoek, vrijgegeven wanneer het verzoek eindigt.
Getypeerde parametersPathParamAsString, PathParamAsInteger, QueryParamAsString, QueryParamAsInteger, QueryParamAsBooleanLeest en converteert een pad- of querywaarde in één aanroep.
Body-toegangBodyAsString, BodyAsJSON, HeaderValueParseert de requestbody eenmalig en cachet het resultaat.
AntwoordenRespondJSON, RespondErrorSchrijft een JSON-body met een statuscode, of een gestructureerde foutpayload.
RequestlevenscyclusBeforeHandle, AfterHandle, HandleExceptionOp TsgcOpenAPIServerHandler. Override om logging, authcontroles of aangepaste foutafhandeling toe te voegen.
ValidatieTsgcOpenAPIJSONValidatorToetst requestbodies, query- en padparameters aan de JSON Schemas die de spec declareert.
SpecgeneratieGenerateSpec, Title, Description, Version, BasePathOp TsgcOpenAPICodeFirstScanner. Produceert een OpenAPI 3.0-document vanuit de RTTI van een geannoteerde klasse.
ContractattributensgcServiceContract, sgcRoute, sgcSummary, sgcDescription, sgcTag, sgcResponseKlasse- en methode-attributen die de gegenereerde spec vullen.
WerkwoordattributensgcHttpGet, sgcHttpPost, sgcHttpPut, sgcHttpDelete, sgcHttpPatch, sgcHttpHead, sgcHttpOptionsDeclareert het HTTP-werkwoord dat een geannoteerde methode beantwoordt.
ParameterbindingsgcFromPath, sgcFromQuery, sgcFromHeader, sgcFromBody, sgcRequiredDeclareert waar elke methodeparameter vandaan wordt gelezen.
DispatchTsgcOpenAPICodeFirstDispatcher (RegisterController, DispatchOperation, IsRegistered)Roept de geannoteerde methode aan die voor een operationId is geregistreerd, rechtstreeks, zonder handmatige if-keten.
AfhankelijkheidDelphi XE7 of hogerCode-first scanning en dispatch steunen op System.Rtti, niet beschikbaar vóór XE7. Spec-first heeft die vereiste niet.

Eén runtimeclient, elke OpenAPI-beschreven API

Een generieke client voor elk OpenAPI-beschreven endpoint, met Basic auth, bearer tokens, generieke OAuth2 en generieke JWT ingebouwd.

MogelijkheidAPIOpmerkingen
BasisaanroepHTTP_REQUESTOp TsgcOpenAPI_Client. Draagt een TsgcOpenAPIRequest/TsgcOpenAPIResponse-paar naar elk endpoint.
Basis-URLSetBaseURL, GetBaseURLHet endpoint waartegen elk relatief pad in een verzoek wordt opgelost.
Generieke authenticatieAuthentication (Basic, Token, OAuth2, JWT)Basic auth en bearer tokens, plus generieke OAuth2- en JWT-flows.
TransportTLSOptions, ProxyOptions, EncodeBodyAsUTF8Standaard TLS- en proxyconfiguratie, gedeeld met de rest van de sgc HTTP-stack.
Voortgang & loggingOnUpload, OnDownload, Log, LogFileNameVolg grote request-/responsebodies en log optioneel elke aanroep naar een bestand.
Request-hookOnBeforeRequestInspecteer of wijzig een verzoek voordat het wordt verstuurd.
TLS-hooksOnSSLVerifyPeer, OnSSLGetHandler, OnSSLAfterCreateHandlerCertificaatverificatie en handleraanpassing, gedeeld met de rest van de sgc HTTP-stack.

API's, compilers en targets

Publieke standaarden op de lijn, en dezelfde broncode voor elke ondersteunde compiler.

GebiedDetail
OpenAPIOpenAPI 3.0 en 3.1, zowel voor de spec-first routing van de server als voor de JSON Schemas waaraan requestvalidatie toetst.
ClientauthenticatieHTTP Basic-authenticatie en bearer tokens, plus generieke OAuth2 en JWT.
MetricsPrometheus text exposition format 0.0.4 op /metrics.
PlatformsWindows Win32, Windows Win64, Linux64, macOS, iOS en Android voor alle zeven klassen.
AfhankelijkheidGeen, behalve de meegeleverde sgcWebSockets Core runtime. Geen extra add-on voor een van de zeven klassen.
CompilersDelphi en C++ Builder 7 tot en met 13. Code-first OpenAPI heeft Delphi XE7 of hoger nodig.
EditiesDe REST-serverfamilie zit ook in sgcWebSockets vanaf Professional, de OpenAPI-server vanaf Enterprise, en de OpenAPI-client vanaf Standard.
LicentiesStandalone. De sgcWebSockets Core runtime is meegeleverd en de volledige broncode is inbegrepen.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Bouw met sgcREST

Download de gratis proefversie en zet je eerste REST-endpoint of OpenAPI-aanroep op vanuit Delphi of C++ Builder.