Matrice des fonctionnalités sgcREST : serveur REST et OpenAPI | eSeGeCe

sgcREST matrice des fonctionnalités

Tout ce que fait sgcREST, réparti sur le serveur REST et ses compléments, le moteur serveur OpenAPI et la famille du client OpenAPI. Chaque capacité fonctionne de la même façon en Delphi et en C++ Builder, et chaque licence est livrée avec le code source complet. Les sous-pages par composant ne sont pas encore publiées pour ce lancement, chaque entrée ci-dessous est autonome sur cette page.

Serveur REST

CORS, stats, tenancy et utilisateurs

Serveur OpenAPI

Spec-first et code-first

Client OpenAPI

Consomme n'importe quelle API décrite en OpenAPI

Standards et plateformes

Delphi 7 à 13, C++ Builder

sgcREST est autonome. Il est livré avec le runtime sgcWebSockets Core inclus, ce n'est donc pas un complément, et il tourne sur la bibliothèque Indy standard livrée avec RAD Studio.

OpenAPI code-first a besoin de Delphi XE7 ou ultérieur. Générer une spécification à partir d'une classe Delphi annotée s'appuie sur la RTTI introduite dans XE7. Le serveur REST, ses compléments et le moteur OpenAPI spec-first tournent de Delphi 7 à 13.

Sept classes, trois familles

Quatre composants sur la page de palette SGC REST, et trois classes pur code serveur et client OpenAPI, déclarés dans les unités sgcHTTP_REST_Server* et sgcHTTP_OpenAPI_*.

ComposantClassePalette ?Description
Serveur RESTTsgcHTTPRESTServerOuiServeur d'API REST bâti sur TsgcHTTPServer, avec gestion CORS et des compléments stats/tenancy attachables.
Stats du serveur RESTTsgcHTTPServerStatsOuiCompteurs de requêtes, suivi de latence, /metrics Prometheus et /health JSON.
Tenancy du serveur RESTTsgcHTTPServer_TenancyOuiRésolution multi-tenant par hôte, chemin, en-tête ou revendication JWT.
Utilisateurs du serveur RESTTsgcHTTPServer_UsersOuiMagasin de comptes local : ajoute, valide, hache, étiquette par rôle et persiste les utilisateurs.
Serveur OpenAPI, spec-firstTsgcOpenAPIServerHandlerNon, pur codeSert une API depuis un document OpenAPI 3.0/3.1 chargé, avec validation des requêtes.
Serveur OpenAPI, code-firstTsgcOpenAPICodeFirstScannerNon, pur codeGénère la spécification OpenAPI à partir d'une classe Delphi annotée par RTTI. Nécessite Delphi XE7+.
Client OpenAPITsgcOpenAPI_ClientNon, pur codeClient runtime générique pour tout point de terminaison décrit en OpenAPI.

CORS, stats, tenancy et un magasin d'utilisateurs

TsgcHTTPRESTServer est un descendant de TsgcHTTPServer, il part donc des mêmes bindings et de la même gestion TLS que partage chaque serveur HTTP sgc, et superpose par-dessus les extras habituels d'une API REST.

CapacitéAPINotes
CORSCORSOptions (Enabled, AllowOrigins, AllowHeaders, AllowMethods)Désactivé par défaut. Les requêtes préliminaires OPTIONS reçoivent une réponse automatique une fois activé.
Complément statsServerStats: TsgcHTTPServerStatsAttache un composant de stats et chaque requête est comptée et chronométrée sans toucher aux gestionnaires de route.
Complément tenancyTenancy: TsgcHTTPServer_Tenancy, TenantAttache un composant de tenancy pour résoudre le tenant de l'appelant ; Tenant lit le résultat pour la requête en cours.
Compteurs de requêtesTotalRequests, Status1xx à Status5xxSur TsgcHTTPServerStats. Comptés par classe de statut à l'envoi des réponses.
LatenceLatencyMinMs, LatencyAvgMs, LatencyMaxMsSuivie par requête sur TsgcHTTPServerStats, remise à zéro avec Reset.
Point de terminaison metricsGetMetricsText, IsMetricsRequestFormat d'exposition texte Prometheus 0.0.4, servi sur /metrics.
Point de terminaison healthGetHealthJSON, IsHealthRequestCharge utile JSON de santé servie sur /health, inclut UptimeSeconds et ActiveConnections.
Stats par point de terminaisonGetEndpointStats, EndpointsUne paire chemin/compteur par point de terminaison, pour un rapport ou une console d'administration.
Résolution du tenantResolution, ResolveTenantSur TsgcHTTPServer_Tenancy. Résout par suffixe d'hôte, segment de chemin, en-tête ou revendication JWT.
Sources du tenantHostSuffix, PathSegmentIndex, HeaderName, ClaimName, DefaultTenantLa source lue pour le mode Resolution configuré, et le repli quand elle ne donne rien.
Résolution personnaliséeOnResolveTenantSurcharge ou étend la logique de résolution intégrée.
Comptes utilisateursAddUser, DeleteUser, FindUser, ValidateCredentials, SetPassword, EnableUser, UserExistsSur TsgcHTTPServer_Users. Identifiants salés et hachés, jamais renvoyés en clair.
RôlesAddRole, RemoveRole, UserHasRole, GetUserRolesÉtiquettes de rôle libres par compte, vérifiées depuis un gestionnaire de route.
ÉnumérationCount, GetUserCount, GetUserByIndex, GetUsernamesVues en lecture seule pour un rapport ou une console d'administration ; le hachage et le sel de mot de passe ne sont jamais inclus.
PersistanceLoadUsers, SaveUsers, SaveToFile, LoadFromFile, ExportUsers, ImportUsersStorage.EncryptAtRest chiffre le magasin ; OnLoadUsers/OnSaveUsers substituent un backend personnalisé.
ÉvénementsOnStats, OnResolveTenant, OnValidateCredentials, OnFindUser, OnExceptionUn événement par complément pour les cas que la logique intégrée ne couvre pas.

Routage spec-first, génération code-first

Les deux approches alimentent la même table de routage et le même contexte de requête ; seule la source du document OpenAPI diffère.

CapacitéAPINotes
Table de routageTsgcOpenAPIRouteTable (Add, Match)Construite depuis la section paths d'une spécification ; fait correspondre un verbe et un chemin à un operationId.
Contexte de requêteTsgcOpenAPIServerContext (Request, Response, PathParams, QueryParams)Une instance par requête appariée, libérée à la fin de la requête.
Paramètres typésPathParamAsString, PathParamAsInteger, QueryParamAsString, QueryParamAsInteger, QueryParamAsBooleanLit et convertit une valeur de chemin ou de requête en un seul appel.
Accès au corpsBodyAsString, BodyAsJSON, HeaderValueAnalyse le corps de la requête une seule fois et met le résultat en cache.
RéponseRespondJSON, RespondErrorÉcrit un corps JSON avec un code de statut, ou une charge utile d'erreur structurée.
Cycle de vie de la requêteBeforeHandle, AfterHandle, HandleExceptionSur TsgcOpenAPIServerHandler. Surcharge pour ajouter journalisation, vérifications d'auth ou mappage d'erreur personnalisé.
ValidationTsgcOpenAPIJSONValidatorVérifie les corps de requête, les paramètres de requête et de chemin par rapport aux schémas JSON que déclare la spécification.
Génération de spécificationGenerateSpec, Title, Description, Version, BasePathSur TsgcOpenAPICodeFirstScanner. Produit un document OpenAPI 3.0 à partir de la RTTI d'une classe annotée.
Attributs de contratsgcServiceContract, sgcRoute, sgcSummary, sgcDescription, sgcTag, sgcResponseAttributs au niveau classe et méthode qui alimentent la spécification générée.
Attributs de verbesgcHttpGet, sgcHttpPost, sgcHttpPut, sgcHttpDelete, sgcHttpPatch, sgcHttpHead, sgcHttpOptionsDéclare le verbe HTTP auquel répond une méthode annotée.
Liaison de paramètressgcFromPath, sgcFromQuery, sgcFromHeader, sgcFromBody, sgcRequiredDéclare la source de lecture de chaque paramètre de méthode.
DispatchTsgcOpenAPICodeFirstDispatcher (RegisterController, DispatchOperation, IsRegistered)Invoque directement la méthode annotée enregistrée pour un operationId, sans chaîne if manuelle.
DépendanceDelphi XE7 ou ultérieurLe scan et le dispatch code-first s'appuient sur System.Rtti, indisponible avant XE7. Le spec-first n'a pas cette exigence.

Un client runtime, n'importe quelle API décrite en OpenAPI

Un client générique pour tout point de terminaison décrit en OpenAPI, avec authentification Basic, jetons Bearer, OAuth2 générique et JWT générique intégrés.

CapacitéAPINotes
Appel de baseHTTP_REQUESTSur TsgcOpenAPI_Client. Porte une paire TsgcOpenAPIRequest/TsgcOpenAPIResponse vers n'importe quel point de terminaison.
URL de baseSetBaseURL, GetBaseURLLe point de terminaison contre lequel se résout chaque chemin relatif d'une requête.
Authentification génériqueAuthentication (Basic, Token, OAuth2, JWT)Authentification Basic et jetons Bearer, plus flux OAuth2 et JWT génériques.
TransportTLSOptions, ProxyOptions, EncodeBodyAsUTF8Configuration TLS et proxy standard partagée avec le reste de la pile HTTP sgc.
Progression et journalisationOnUpload, OnDownload, Log, LogFileNameSuit les corps de requête/réponse volumineux et journalise en option chaque appel dans un fichier.
Point d'accroche de requêteOnBeforeRequestInspecte ou modifie une requête avant son envoi.
Points d'accroche TLSOnSSLVerifyPeer, OnSSLGetHandler, OnSSLAfterCreateHandlerVérification de certificat et personnalisation du handler, partagées avec le reste de la pile HTTP sgc.

API, compilateurs et cibles

Des standards publics sur le fil, et le même source sur chaque compilateur pris en charge.

DomaineDétail
OpenAPIOpenAPI 3.0 et 3.1, à la fois pour le routage spec-first du serveur et pour les schémas JSON contre lesquels la validation des requêtes vérifie.
Authentification clientAuthentification HTTP Basic et jetons Bearer, plus OAuth2 et JWT génériques.
MétriquesFormat d'exposition texte Prometheus 0.0.4 sur /metrics.
PlateformesWindows Win32, Windows Win64, Linux64, macOS, iOS et Android pour les sept classes.
DépendanceAucune au-delà du runtime sgcWebSockets Core inclus. Aucun complément supplémentaire pour l'une des sept classes.
CompilateursDelphi et C++ Builder 7 à 13. L'OpenAPI code-first nécessite Delphi XE7 ou ultérieur.
ÉditionsLa famille du serveur REST est aussi livrée dans sgcWebSockets à partir de Professional, le serveur OpenAPI à partir d'Enterprise, et le client OpenAPI à partir de Standard.
LicenceAutonome. Le runtime sgcWebSockets Core est inclus et le code source complet est fourni.
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Construis avec sgcREST

Télécharge l'essai gratuit et mets en place ton premier point de terminaison REST ou appel OpenAPI depuis Delphi ou C++ Builder.