sgcREST Des API REST, en natif dans Delphi. OpenAPI intégré.

Deux besoins, sept classes. TsgcHTTPRESTServer publie une API REST avec CORS, /metrics et /health, du multi-tenant et un magasin d’utilisateurs. Un moteur OpenAPI sert une API directement depuis un contrat OpenAPI 3.x, ou génère le contrat à partir de ta classe Delphi, et TsgcOpenAPI_Client consomme n’importe quelle API décrite par OpenAPI. Le runtime sgcWebSockets Core est inclus.

Publie ton premier point de terminaison en quelques lignes →
  • Delphi 7 à 13
  • C++ Builder
  • OpenAPI 3.x
  • CORS
  • /metrics et /health
  • Multi-tenant
  • Code source complet
  • 4Composants de la palette : serveur REST, statistiques, multi-tenant et utilisateurs
  • 7Classes au total : la famille du serveur REST, le moteur OpenAPI et le client
  • 4Schémas d’authentification client : Basic, jeton bearer, OAuth2 et JWT
  • 2Points de terminaison intégrés, /metrics et /health, tous deux à activer
  • 100%Code source inclus avec chaque licence
Vois-le à l’œuvre

Découvre sgcREST en deux minutes.

Une démonstration commentée et sous-titrée du serveur REST : le serveur HTTP que tu connais déjà, plus les quatre choses dont une API REST finit toujours par avoir besoin. Rien n’est téléchargé tant que tu n’appuies pas sur lecture.

Démarrage rapide sgcREST

Construis un serveur d’API REST en Delphi avec CORS, statistiques en direct, multi-tenant et utilisateurs.

  1. Tout est héritéTsgcHTTPRESTServer descend de TsgcHTTPServer : Port, TLS, Authentication, sessions, compression, pool de threads, pare-feu et limiteur de débit.
  2. Tout est à activerCORS est désactivé par défaut, ServerStats et Tenancy ne sont pas assignés. Rien ne s’active tout seul après une mise à jour.
  3. CORSListe les origines, méthodes et en-têtes que tu autorises, et le serveur répond lui-même au préflight OPTIONS.
  4. Métriques et santéAssigne TsgcHTTPServerStats et obtiens /metrics et /health, tous deux derrière la barrière d’authentification du serveur.
  5. Multi-tenantChaque requête est rattachée à un tenant à partir de l’hôte, du chemin, d’un en-tête ou d’une revendication JWT. Les gestionnaires n’ont qu’à lire Tenant.
  6. Un magasin d’utilisateurs prêt à l’emploiComptes, hachages de mots de passe salés et rôles. La barrière Basic intégrée y résout chaque identifiant.
Ce qu’il y a dans la boîte

Quatre composants de palette, trois classes uniquement en code.

Le serveur REST et ses trois compagnons sont des composants non visuels de la page SGC REST de la palette. Le moteur du serveur OpenAPI et le client OpenAPI se trouvent dans les unités sgcHTTP_OpenAPI_* : crées-en un, configure-le et appelle directement ses méthodes.

Serveur REST · un serveur, trois compagnons

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

TsgcHTTPRESTServer étend le TsgcHTTPServer standard avec la gestion de CORS via CORSOptions, et deux propriétés pour des compagnons optionnels. TsgcHTTPServerStats compte chaque requête par classe de statut, suit la latence minimale, moyenne et maximale, et sert un point de terminaison /metrics au format Prometheus ainsi qu’un point de terminaison JSON /health, avec GetEndpointStats pour une ventilation par route. TsgcHTTPServer_Tenancy détermine le tenant de l’appelant à partir du nom d’hôte, d’un segment de chemin, d’un en-tête de requête ou d’une revendication JWT, et Tenant lit le résultat pour la requête en cours. TsgcHTTPServer_Users est un magasin autonome de comptes, de hachages de mots de passe salés et de rôles.

Serveur OpenAPI · spec-first ou code-first

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

Charge un document OpenAPI 3.0 ou 3.1 et la table de routage est construite à partir de sa section paths. Une requête correspondante arrive sous la forme d’un TsgcOpenAPIServerContext, avec des paramètres de chemin et de requête typés, des utilitaires pour le corps et RespondJSON/RespondError, et le validateur vérifie les corps, les paramètres de requête et de chemin par rapport aux schémas JSON que déclare la spécification. Le code-first inverse la source de vérité : annote une simple classe Delphi et le scanner génère la spécification.

Client OpenAPI · n’importe quelle API décrite

Voir →
  • TsgcOpenAPI_Client
  • SetBaseURL
  • HTTP_REQUEST
  • HTTP_REQUEST_Async
  • Authentication
  • OnBeforeRequest
  • OnUpload
  • OnDownload

Un client générique d’exécution pour tout point de terminaison décrit par un document OpenAPI, et la classe de base des SDK générés. Authentication couvre l’authentification Basic et les jetons bearer, ainsi que OAuth2 et JWT génériques, HTTP_REQUEST porte l’appel, et OnBeforeRequest, OnUpload et OnDownload le suivent.

Voir chaque composant et chaque propriété

Comment ça marche

Un serveur, des compagnons composables.

Les sept classes se répartissent nettement par rôle. Le serveur REST porte le trafic HTTP, trois compagnons ajoutent ce dont une API de production a besoin, et le moteur OpenAPI transforme une spécification, écrite ou générée, en table de routage opérationnelle.

Un TsgcHTTPServer avec des extras

TsgcHTTPRESTServer hérite des liaisons, du TLS et de la gestion HTTP/2 du serveur HTTP simple livré dans chaque édition de sgcWebSockets, et ajoute CORS ainsi que les propriétés des compagnons, de sorte qu’une API REST dispose de métriques, de contrôles de santé et du multi-tenant sans framework séparé.

Des compagnons, pas du câblé en dur

Les statistiques, le multi-tenant et les utilisateurs sont des composants séparés. Attache ceux dont une API a besoin et laisse les autres de côté. Un compagnon attaché mais non configuré ne coûte rien au serveur à vérifier.

Spec-first et code-first, une seule table de routage

Que le document OpenAPI provienne d’un fichier que tu as chargé ou de TsgcOpenAPICodeFirstScanner.GenerateSpec qui analyse une classe annotée, la même table de routage et le même contexte de requête servent les deux.

Tous les rappels dont la spécification a besoin

Les événements de validation et d’authentification reçoivent le TsgcOpenAPIServerContext analysé, avec PathParams, QueryParams et RespondJSON, et OnException intercepte les erreurs des gestionnaires avant qu’elles n’atteignent le câble, donc rien de la raison pour laquelle un appel a été accepté ou rejeté ne t’est caché.

Six plateformes, aucun module complémentaire

Les sept classes tournent sur la bibliothèque Indy standard livrée avec RAD Studio : Windows Win32 et Win64, Linux64, macOS, iOS et Android. De Delphi 7 à RAD Studio 13 et sur C++ Builder.

Le runtime Core est inclus

Le runtime sgcWebSockets Core apporte la pile HTTP/TLS sur laquelle tournent le serveur REST et chaque classe OpenAPI, ainsi que la couche JSON qui sérialise chaque requête et chaque réponse. Son code source complet fait partie du paquet, comme le reste.

Démarrage rapide

Publie un point de terminaison, publie un contrat, ou appelle-en un.

Le serveur REST te remet directement la requête. Le serveur OpenAPI te remet une opération validée et déjà mise en correspondance. Le client OpenAPI appelle les points de terminaison d’un tiers. Les trois se compilent de la même façon de Delphi 7 à 13 et en 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, traité pour toiActive CORSOptions, liste les origines, méthodes et en-têtes que tu autorises, et le serveur répond au préflight OPTIONS. Cela s’applique à tes gestionnaires et aux fichiers servis depuis DocumentRoot.
  2. Des statistiques en une assignationAssigne TsgcHTTPServerStats à ServerStats pour obtenir /metrics et /health. Laisse-le non assigné et aucun compteur n’est tenu.
  3. Le multi-tenant avant l’exécution de ton codeAssigne TsgcHTTPServer_Tenancy et chaque requête est d’abord rattachée à un tenant. Tes gestionnaires n’ont qu’à lire Tenant.
  4. Des utilisateurs sans gestionnaireAssigne TsgcHTTPServer_Users à Authentication.Users et la barrière Basic intégrée résout seule chaque identifiant.
Démarrage rapide sgcREST : TsgcHTTPServerStats active les points de terminaison Metrics et Health, GET /metrics renvoie les compteurs de requêtes et GET /health renvoie un statut JSON.
Trois lignes de configuration, puis GET /metrics et GET /health répondent tout seuls.

La matrice complète des fonctionnalités

Avant d’acheter

Deux choses à savoir d’abord.

Ce que sgcREST attend de toi, et ce qu’il n’attend pas. Les deux réponses sont courtes, et toutes deux figurent sur cette page plutôt que dans les petites lignes.

publier une API REST
TsgcHTTPRESTServer        CORS, ServerStats, Tenancy
TsgcHTTPServerStats       /metrics et /health
TsgcHTTPServer_Tenancy    hôte, chemin, en-tête, revendication JWT
TsgcHTTPServer_Users      comptes, hachages, rôles

publier depuis un contrat OpenAPI 3.x
table de routage + contexte spec-first, Delphi 7 à 13
scanner code-first        classe annotée, XE7 et suivants

consommer une API
TsgcOpenAPI_Client        toute API décrite par OpenAPI

TsgcHTTPRESTServer descend de TsgcHTTPServer,
  donc il publie avec le Port, le TLS et
  l’Authentication que tu utilises déjà.

sgcREST est autonome

Autonome, il inclut le runtime sgcWebSockets Core : la pile serveur et cliente HTTP/TLS sur laquelle tournent le serveur REST et chaque classe OpenAPI, et la couche JSON qui sérialise chaque requête et chaque réponse. Un seul installeur, et sgcREST tourne sur la bibliothèque Indy standard livrée avec RAD Studio.

L’OpenAPI code-first nécessite Delphi XE7+

Générer une spécification à partir d’une classe Delphi annotée repose sur la RTTI apparue dans Delphi XE7, donc TsgcOpenAPICodeFirstScanner et TsgcOpenAPICodeFirstDispatcher se compilent à partir de XE7. Le serveur REST, ses compagnons et le moteur spec-first tournent sur tous les compilateurs pris en charge, de Delphi 7 à 13.

Rien entre les deux n’est une boîte noire

sgcREST implémente les interfaces REST et OpenAPI que décrit ton contrat au lieu d’encapsuler un générateur de code que tu ne contrôles pas. Les requêtes, la validation et la distribution sont de vraies méthodes et de vrais événements, et le code source complet est livré avec chaque licence, donc tout se parcourt pas à pas dans ton propre débogueur.

Une partie de sgcWebSockets

Un paquet de sgcWebSockets, sous licence indépendante.

sgcREST regroupe les classes REST et OpenAPI de sgcWebSockets dans un seul paquet. Chaque licence inclut les sept classes, le runtime sgcWebSockets Core, le code source complet, une redistribution sans redevances et 1 an de mises à jour.

Single

1 licence développeur. Utilisation sur une machine à la fois.

€249

Team

2 licences développeur. Utilisation sur deux machines à la fois.

€399

Site

Développeurs illimités. Toutes les machines de l’entreprise.

€649

Le renouvellement est proposé avec une remise de 50 % à 70 %. Tu as déjà sgcWebSockets ? Le serveur REST est livré à partir de l’édition Professional et l’édition Enterprise inclut aussi le serveur OpenAPI, donc ton édition peut déjà te couvrir, et le pack All-Access inclut tout. L’installeur d’essai est l’essai sgcWebSockets All-Access, ce qui permet d’évaluer dès aujourd’hui les sept classes.

Voir les tarifs et commander
TÉMOIGNAGES

Ce que disent les développeurs

Plébiscité par des développeurs Delphi, C++ Builder, Lazarus et .NET dans le monde entier.

Votre bibliothèque sgcWebSockets est très utile et facile à configurer. Continuez votre excellent travail !
Simone Moretti Développeur Delphi
sgcWebSockets est incroyable et votre support est le meilleur !
Christian Meyer Fondateur & CTO
Merci beaucoup pour votre aide et votre support, j’adore vos composants.
Mark Steinfeld CTO

Des API REST, des contrats OpenAPI, du code natif.

Un serveur REST avec CORS, statistiques, multi-tenant et utilisateurs, un serveur OpenAPI qui fonctionne en spec-first ou en code-first, et un client OpenAPI pour toute API décrite, avec le runtime sgcWebSockets Core inclus et le code source complet livré.

Découvre aussi eSeGeCe

Autres produits d’eSeGeCe

sgcREST est l’une des bibliothèques de composants eSeGeCe pour Delphi, C++ Builder et .NET. Elles partagent leurs conventions, sont livrées avec le code source complet et se déploient sans redevances.

sgcWebSockets

WebSocket, HTTP/2, MQTT, AMQP, WebRTC, IA et plus de 30 intégrations d’API pour Delphi, C++ Builder, Lazarus et .NET. C’est là que vit le runtime Core, et son édition Enterprise inclut aussi le serveur OpenAPI.

sgcHTTP

Serveur HTTP, client HTTP/2, client gRPC et clients Google Cloud Pub/Sub, Calendar et FCM pour Delphi et C++ Builder. Autonome, avec le runtime sgcWebSockets Core inclus.

sgcAuth

Composants clients OAuth2 et JWT, plus la connexion par passkey WebAuthn, un complément naturel du magasin d’utilisateurs d’une API REST.

sgcAI

Composants IA, LLM et MCP pour Delphi et C++ Builder. Sept fournisseurs de LLM derrière un seul composant, plus MCP, embeddings et synthèse vocale.

sgcMQ

Composants clients MQTT, AMQP 0.9.1 et 1.0, Apache Kafka et STOMP pour Delphi et C++ Builder. Autonome, avec le runtime sgcWebSockets Core inclus.

sgcSocial

Composants clients Telegram et WhatsApp Business pour Delphi et C++ Builder. Autonome, avec le runtime sgcWebSockets Core inclus.

sgcOpenAPI

Parser OpenAPI 3.x, générateur de SDK Pascal natif et plus de 1 195 SDK cloud préconçus, pour la génération de code hors ligne plutôt qu’un client d’exécution.

sgcHTML

Composants HTML et d’interface côté serveur sur Bootstrap 5 et htmx pour Delphi, C++ Builder et .NET.

sgcQUIC

Transport QUIC brut et client et serveur HTTP/3, avec WebTransport. Une extension de sgcWebSockets Enterprise.

sgcSign

XAdES, PAdES, CAdES et ASiC pour les documents, Authenticode, ClickOnce, NuGet et VSIX pour le code.

sgcPDF

Crée, édite, affiche, signe, caviarde et valide des fichiers PDF en pur Object Pascal, sans DLL à déployer. Licence séparée.

sgcBiometrics

Windows Hello, capteurs d’empreintes digitales et Windows Biometric Framework pour Delphi et C++ Builder.

sgcIndy

Composants Indy TCP/IP mis à jour avec TLS moderne, IPv6 et HTTP/2, de Delphi 7 à 13.

Les derniers articles du blog

Voir tous les articles →

Tu vois la vue REST et OpenAPI d’eSeGeCe.

Montre-moi un autre angle →
Garantie satisfait ou remboursé de 30 joursPas satisfait ? Demandez un remboursement intégral dans les 30 jours suivant l'achat. Voir la politique de remboursement