Matrice delle funzionalità di sgcREST: server REST e OpenAPI | eSeGeCe

sgcREST matrice delle funzionalità

Tutto quello che fa sgcREST, mappato sul server REST e i suoi companion, il motore del server OpenAPI e la famiglia del client OpenAPI. Ogni funzionalità si comporta allo stesso modo in Delphi e in C++ Builder, e ogni licenza include il codice sorgente completo. Le sottopagine dei componenti non sono ancora pubblicate per questo lancio, ogni voce qui sotto è autonoma su questa pagina.

Server REST

CORS, statistiche, tenancy e utenti

Server OpenAPI

Spec-first e code-first

Client OpenAPI

Consuma qualsiasi API descritta con OpenAPI

Standard e piattaforme

Da Delphi 7 a 13, C++ Builder

sgcREST è autosufficiente. Viene distribuito con il runtime sgcWebSockets Core incluso, quindi non è un componente aggiuntivo, e gira sulla libreria Indy standard inclusa in RAD Studio.

L'OpenAPI code-first richiede Delphi XE7 o successivo. Generare uno spec da una classe Delphi con attributi si basa sulla RTTI introdotta in XE7. Il server REST, i suoi companion e il motore OpenAPI spec-first girano su Delphi da 7 a 13.

Sette classi, tre famiglie

Quattro componenti sulla pagina della palette SGC REST, e tre classi solo-codice per il server e il client OpenAPI, dichiarate nelle unità sgcHTTP_REST_Server* e sgcHTTP_OpenAPI_*.

ComponenteClassePalette?Descrizione
Server RESTTsgcHTTPRESTServerServer API REST costruito su TsgcHTTPServer, con gestione CORS e companion agganciabili di statistiche/tenancy.
Statistiche del server RESTTsgcHTTPServerStatsContatori delle richieste, tracciamento della latenza, /metrics in formato Prometheus e /health in JSON.
Tenancy del server RESTTsgcHTTPServer_TenancyRisoluzione multi-tenant per host, path, header o claim JWT.
Utenti del server RESTTsgcHTTPServer_UsersArchivio account locale: aggiungi, valida, esegui l'hashing, assegna ruoli e persisti gli utenti.
Server OpenAPI, spec-firstTsgcOpenAPIServerHandlerNo, solo-codiceServe un'API da un documento OpenAPI 3.0/3.1 caricato, con validazione delle richieste.
Server OpenAPI, code-firstTsgcOpenAPICodeFirstScannerNo, solo-codiceGenera lo spec OpenAPI da una classe Delphi con attributi RTTI. Richiede Delphi XE7+.
Client OpenAPITsgcOpenAPI_ClientNo, solo-codiceClient runtime generico per qualsiasi endpoint descritto con OpenAPI.

CORS, statistiche, tenancy e un archivio utenti

TsgcHTTPRESTServer è un discendente di TsgcHTTPServer, quindi parte dagli stessi binding e dalla stessa gestione TLS condivisi da ogni server sgc HTTP, e vi sovrappone le aggiunte tipiche di un'API REST.

FunzionalitàAPINote
CORSCORSOptions (Enabled, AllowOrigins, AllowHeaders, AllowMethods)Disattivo per default. Le richieste preflight OPTIONS vengono risolte automaticamente una volta attivato.
Companion delle statisticheServerStats: TsgcHTTPServerStatsAggancia un componente di statistiche e ogni richiesta viene contata e cronometrata senza toccare i route handler.
Companion di tenancyTenancy: TsgcHTTPServer_Tenancy, TenantAggancia un componente di tenancy per risolvere il tenant del chiamante; Tenant legge il risultato per la richiesta corrente.
Contatori delle richiesteTotalRequests, Status1xx fino a Status5xxSu TsgcHTTPServerStats. Contati per classe di stato man mano che le risposte vengono inviate.
LatenzaLatencyMinMs, LatencyAvgMs, LatencyMaxMsTracciata per richiesta su TsgcHTTPServerStats, azzerata con Reset.
Endpoint delle metricheGetMetricsText, IsMetricsRequestFormato di esposizione testuale Prometheus 0.0.4, servito su /metrics.
Endpoint di saluteGetHealthJSON, IsHealthRequestPayload JSON di salute servito su /health, include UptimeSeconds e ActiveConnections.
Statistiche per endpointGetEndpointStats, EndpointsUna coppia path/conteggio per endpoint, per un report o una console di amministrazione.
Risoluzione del tenantResolution, ResolveTenantSu TsgcHTTPServer_Tenancy. Risolve tramite suffisso host, segmento del path, header o claim JWT.
Sorgenti del tenantHostSuffix, PathSegmentIndex, HeaderName, ClaimName, DefaultTenantLa sorgente letta per la modalità Resolution configurata, e il fallback quando non produce nulla.
Risoluzione personalizzataOnResolveTenantSovrascrivi o estendi la logica di risoluzione integrata.
Account utenteAddUser, DeleteUser, FindUser, ValidateCredentials, SetPassword, EnableUser, UserExistsSu TsgcHTTPServer_Users. Credenziali salate e con hashing, mai restituite in chiaro.
RuoliAddRole, RemoveRole, UserHasRole, GetUserRolesTag di ruolo liberi per account, verificati da un route handler.
EnumerazioneCount, GetUserCount, GetUserByIndex, GetUsernamesViste in sola lettura per un report o una console di amministrazione; hash della password e salt non sono mai inclusi.
PersistenzaLoadUsers, SaveUsers, SaveToFile, LoadFromFile, ExportUsers, ImportUsersStorage.EncryptAtRest cifra l'archivio; OnLoadUsers/OnSaveUsers sostituiscono un backend personalizzato.
EventiOnStats, OnResolveTenant, OnValidateCredentials, OnFindUser, OnExceptionUn evento per companion per i casi non coperti dalla logica integrata.

Instradamento spec-first, generazione code-first

Entrambi gli approcci alimentano la stessa tabella delle route e lo stesso contesto di richiesta; cambia solo la sorgente del documento OpenAPI.

FunzionalitàAPINote
Tabella delle routeTsgcOpenAPIRouteTable (Add, Match)Costruita dalla sezione paths di uno spec; abbina un verbo e un path a un operationId.
Contesto di richiestaTsgcOpenAPIServerContext (Request, Response, PathParams, QueryParams)Un'istanza per richiesta abbinata, liberata quando la richiesta termina.
Parametri tipizzatiPathParamAsString, PathParamAsInteger, QueryParamAsString, QueryParamAsInteger, QueryParamAsBooleanLegge e converte un valore di path o query in un'unica chiamata.
Accesso al bodyBodyAsString, BodyAsJSON, HeaderValueAnalizza il body della richiesta una sola volta e mette in cache il risultato.
RispostaRespondJSON, RespondErrorScrive un body JSON con un codice di stato, o un payload di errore strutturato.
Ciclo di vita della richiestaBeforeHandle, AfterHandle, HandleExceptionSu TsgcOpenAPIServerHandler. Sovrascrivi per aggiungere logging, controlli di autenticazione o mappatura personalizzata degli errori.
ValidazioneTsgcOpenAPIJSONValidatorVerifica body, parametri query e path rispetto agli JSON Schema dichiarati dallo spec.
Generazione dello specGenerateSpec, Title, Description, Version, BasePathSu TsgcOpenAPICodeFirstScanner. Produce un documento OpenAPI 3.0 dalla RTTI di una classe con attributi.
Attributi del contrattosgcServiceContract, sgcRoute, sgcSummary, sgcDescription, sgcTag, sgcResponseAttributi a livello di classe e di metodo che popolano lo spec generato.
Attributi dei verbisgcHttpGet, sgcHttpPost, sgcHttpPut, sgcHttpDelete, sgcHttpPatch, sgcHttpHead, sgcHttpOptionsDichiara il verbo HTTP a cui risponde un metodo annotato.
Binding dei parametrisgcFromPath, sgcFromQuery, sgcFromHeader, sgcFromBody, sgcRequiredDichiara da dove viene letto ogni parametro del metodo.
DispatchTsgcOpenAPICodeFirstDispatcher (RegisterController, DispatchOperation, IsRegistered)Invoca direttamente il metodo annotato registrato per un operationId, senza catene if manuali.
DipendenzaDelphi XE7 o successivoLo scanning e il dispatch code-first si basano su System.Rtti, non disponibile prima di XE7. Lo spec-first non ha questo requisito.

Un client runtime, qualsiasi API descritta con OpenAPI

Un client generico per qualsiasi endpoint descritto con OpenAPI, con Basic auth, bearer token, OAuth2 e JWT generici integrati.

FunzionalitàAPINote
Chiamata baseHTTP_REQUESTSu TsgcOpenAPI_Client. Porta una coppia TsgcOpenAPIRequest/TsgcOpenAPIResponse verso qualsiasi endpoint.
URL baseSetBaseURL, GetBaseURLL'endpoint rispetto a cui si risolve ogni path relativo di una richiesta.
Autenticazione genericaAuthentication (Basic, Token, OAuth2, JWT)Basic auth e bearer token, più i flussi OAuth2 e JWT generici.
TrasportoTLSOptions, ProxyOptions, EncodeBodyAsUTF8Configurazione TLS e proxy standard condivisa con il resto dello stack sgc HTTP.
Avanzamento e logOnUpload, OnDownload, Log, LogFileNameTraccia i body di richiesta/risposta di grandi dimensioni e opzionalmente registra ogni chiamata su file.
Hook di richiestaOnBeforeRequestIspeziona o modifica una richiesta prima che venga inviata.
Hook TLSOnSSLVerifyPeer, OnSSLGetHandler, OnSSLAfterCreateHandlerVerifica del certificato e personalizzazione dell'handler, condivisi con il resto dello stack sgc HTTP.

API, compilatori e target

Standard pubblici sul filo, e lo stesso sorgente su ogni compilatore supportato.

AmbitoDettaglio
OpenAPIOpenAPI 3.0 e 3.1, sia per l'instradamento spec-first del server sia per gli JSON Schema con cui la validazione delle richieste confronta.
Autenticazione clientAutenticazione HTTP Basic e bearer token, più OAuth2 e JWT generici.
MetricheFormato di esposizione testuale Prometheus 0.0.4 su /metrics.
PiattaformeWindows Win32, Windows Win64, Linux64, macOS, iOS e Android per tutte e sette le classi.
DipendenzaNessuna oltre al runtime sgcWebSockets Core incluso. Nessun componente aggiuntivo per nessuna delle sette classi.
CompilatoriDelphi e C++ Builder dalla versione 7 alla 13. L'OpenAPI code-first richiede Delphi XE7 o successivo.
EdizioniLa famiglia del server REST viene distribuita anche dentro sgcWebSockets a partire dalla Professional, il server OpenAPI a partire dalla Enterprise, e la famiglia del client OpenAPI a partire dalla Standard.
LicenzeAutonomo. Il runtime sgcWebSockets Core è incluso e il codice sorgente completo fa parte della fornitura.
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Costruisci con sgcREST

Scarica la versione di prova gratuita e realizza il tuo primo endpoint REST o la tua prima chiamata OpenAPI da Delphi o C++ Builder.