sgcOpenAPI Arrête d’écrire à la main clients REST. La spec en entrée, du Pascal en sortie.

Pointe sgcOpenAPI vers un document OpenAPI 3.x. Le parseur le lit, le générateur produit un SDK Object Pascal natif, et le composant serveur OpenAPI publie tes propres endpoints sous forme de spec en direct.

  • OpenAPI 3.0 et 3.1
  • JSON et YAML
  • Swagger 2.0 converti automatiquement
  • De Delphi 7 à RAD Studio 13
  • C++ Builder
  • 1,195+SDK cloud prêts à l’emploi, générés à partir des spécifications officielles
  • 280+Services Amazon AWS
  • 650+Services Microsoft Azure
  • 250+Services Google Cloud
  • 15+SDK Microsoft Graph
Regarde-le en action

Découvre sgcOpenAPI en deux minutes.

Une spécification en entrée, du Pascal en sortie, et un serveur à chaque bout. Commentée et sous-titrée. Rien n’est téléchargé tant que tu n’appuies pas sur lecture.

Démarrage rapide de sgcOpenAPI

Transforme une spécification en code Delphi, et transforme du code Delphi en serveur opérationnel.

  1. Générer un clientDonne à la ligne de commande une spécification en entrée et un fichier Pascal en sortie. L’entrée peut être un fichier ou une URL, en JSON ou en YAML.
  2. Ce qui en sortDu Pascal ordinaire : chaque opération devient une méthode, chaque schéma devient une classe. Ajoute -s pour obtenir plutôt un squelette de serveur.
  3. Serveur Spec-FirstCrée TsgcWSAPIServer_OpenAPI, appelle LoadFromFile, gère OnRequest, affecte-le à ton serveur et passe-le en Active.
  4. Serveur Code-FirstAnnote une classe Delphi avec des attributs et la spécification est générée à partir de la classe au démarrage.
  5. ValidationActive ValidateRequest et ValidateRequestBody, et une requête qui ne correspond pas à la spécification n’atteint jamais ton code.
Bibliothèque de SDK prêts à l’emploi

Quatre clouds, déjà en Pascal.

Tu n’as rien à générer pour démarrer. Les quatre plus grandes plateformes cloud sont livrées dans sgcOpenAPI sous forme de SDK Pascal prêts à l’emploi, générés à partir des spécifications officielles et tenus à jour.

Amazon AWS, plus de 280 services

Des SDK de services REST couvrant S3, EC2, Lambda, DynamoDB, SQS, SNS, CloudFormation et plus encore. Dépose l’unité dans le projet et appelle le service avec des classes de requête et de réponse typées.

Voir les SDK AWS →

Microsoft Azure, plus de 650 services

Le plus grand ensemble de la bibliothèque. Azure VMs, Blob Storage, Functions, Cosmos DB, Key Vault et le reste du plan de contrôle Azure, chacun sous forme de client Pascal généré.

Voir les SDK Azure →

Google Cloud, plus de 250 services

Compute Engine, Cloud Storage, BigQuery, Pub/Sub, Cloud Functions et plus encore.

Voir les SDK Google →

Microsoft Graph, plus de 15 SDK

Office 365, Microsoft Teams, OneDrive, Outlook et Active Directory, via l’API Graph.

Voir les SDK Microsoft →

N’importe quelle autre spec

Si l’API publie un document OpenAPI ou Swagger, le générateur en fait le même type d’unité Pascal typée. Il n’y a aucune liste blanche.

Fonctionnalités du générateur →

Tous les niveaux, tout est inclus

Single, Team et Site incluent tous le parseur, le générateur de code, le composant serveur OpenAPI et toute la bibliothèque de SDK prêts à l’emploi. Rien n’est vendu séparément.

Tous les SDK prêts à l’emploi →

Guides pas à pas, d’une spécification publique à un client Delphi qui compile

Le pipeline

La spec en entrée, du code qui compile en sortie.

Cinq étapes, toutes dans l’IDE. Pas de Node.js, pas de générateur de code Java, pas de moteur de templates à apprendre.

# one input, one output, and you have a unit
> sgcOpenAPI.exe -i "api.github.com.json" -o "github.pas" -a 2

File successfully created github.pas

# -a 2 wires up token auth   -u sets the base url
# -x drops operations        -p prunes the classes they used
# -s emits a server stub instead of a client
# exit 0 ok, 5 bad input, 6 bad output, 7 not convertible
uses
  github;  // the unit you just generated

procedure TForm1.btnReposClick(Sender: TObject);
var
  oResponse: TsgcOpenAPI_reposlistforauthenticateduser_Response;
  oRepo: TsgcOpenAPI_repository_Class;
begin
  GetOpenAPIClient.Authentication.Token.BearerToken := 'ghp_...';

  oResponse := GetOpenAPIClient.reposlistforauthenticateduser(
    'private', 'owner', 'all', 'full_name', '', 100, 1);
  try
    if oResponse.IsSuccessful then
      for oRepo in oResponse.Successful.Items do
        Memo1.Lines.Add(oRepo.Full_name)
    else
      Memo1.Lines.Add(IntToStr(oResponse.ResponseCode) + ' ' +
        oResponse.ResponseError);
  finally
    oResponse.Free;
  end;
end;
uses
  sgcHTTP_Server, sgcHTTP_OpenAPI_Server, sgcWebSocket_Server_API_OpenAPI;

procedure TForm1.btnStartClick(Sender: TObject);
begin
  FServer := TsgcHTTPServer.Create(Self);
  FServer.Port := 8080;

  FOpenAPI := TsgcWSAPIServer_OpenAPI.Create(Self);
  FOpenAPI.OpenAPIOptions.Endpoint.ServeSpec := True;
  FOpenAPI.OpenAPIOptions.Endpoint.ServeSwaggerUI := True;
  FOpenAPI.OpenAPIOptions.Validation.ValidateRequest := True;
  FOpenAPI.LoadFromFile('petstore.json');
  FOpenAPI.OnRequest := OnOpenAPIRequest;
  FOpenAPI.Server := FServer;

  FServer.Active := True;
end;

// one event, dispatched by operation id
procedure TForm1.OnOpenAPIRequest(Sender: TObject;
  const aOperationId: string;
  const aContext: TsgcOpenAPIServerContext;
  var Handled: Boolean);
begin
  Handled := True;
  if aOperationId = 'getPetById' then
    aContext.RespondJSON(200,
      FPets.Values[aContext.PathParamAsString('petId')])
  else
    Handled := False;
end;
  1. Pointe-le vers une specPointe -i vers un fichier local ou une URL, en JSON ou en YAML. Les deux sont lus en local, et un document Swagger 2.0 est lui aussi converti en OpenAPI 3 en local.
  2. AnalyseTsgcOpenAPI lit le document dans Paths, Components, Security, Servers, Tags et Info, et consigne dans Warnings tout ce qu’il n’a pas pu honorer. Les pointeurs $ref externes sont récupérés au préalable par TsgcOpenAPI_Bundle.
  3. GénèreTsgcOpenAPI_Parser_Client_Pascal descend de ce lecteur et écrit une seule unité Pascal : une méthode par opération, une classe de réponse par méthode et une classe pour chaque schéma, avec les descriptions du document en commentaires.
  4. CompileAjoute l’unité générée au projet et place-la dans une clause uses. Rien d’autre n’a besoin d’être sur le chemin des bibliothèques que le dossier Source de sgcOpenAPI, de Delphi 7 à RAD Studio 13. Les réponses typées demandent XE7 ou plus récent.
  5. AppelleAppelle GetOpenAPIClient, renseigne les identifiants sur Authentication et appelle l’opération. L’URL de base est déjà intégrée depuis l’entrée servers du document.

Le générateur descend du lecteur, tu peux donc aussi créer TsgcOpenAPI toi-même, parcourir le modèle analysé et construire ton propre outillage par-dessus. Le composant parser →

Côté serveur

Sers la spec, ne te contente pas de la consommer.

TsgcWSAPIServer_OpenAPI se rattache à un TsgcHTTPServer, route les requêtes entrantes selon le document que tu as chargé, les valide avant l’exécution de ton gestionnaire, et sert le document et une Swagger UI depuis le même port.

Spec-First : une unité Delphi charge petstore.json dans TsgcWSAPIServer_OpenAPI et la table de routage est construite à partir de la spécification.

Ce que ça te donne

GET /pets/{petId} arrive dans ton gestionnaire OnRequest avec aOperationId défini sur getPetById. GET /openapi.json renvoie le document que tu as chargé et GET /docs ouvre Swagger UI, tous deux activés par Endpoint.ServeSpec et Endpoint.ServeSwaggerUI. Endpoint.BasePath place le couple sous un préfixe.

Code-First : une classe Delphi annotée avec les attributs sgcServiceContract, sgcRoute et sgcHttpGet, et le document OpenAPI généré à partir d’elle au démarrage.

Spec d’abord ou code d’abord

Charge un contrat JSON avec LoadFromFile et aiguille selon l’identifiant d’opération, ou annote une classe Pascal avec sgcServiceContract, sgcHttpGet, sgcRoute et sgcFromBody et laisse TsgcOpenAPICodeFirstScanner construire le document. Code-First nécessite Delphi XE7 ou une version ultérieure. Les deux démos sont fournies dans Demos\30.Server\.

Validation : les requêtes qui ne correspondent pas à la spécification reçoivent une réponse 400 Bad Request avant l’exécution du gestionnaire OnRequest.

Validation avant l’exécution du gestionnaire

Validation.ValidateRequest, ValidateRequired et ValidateRequestBody contrôlent la requête entrante par rapport au document avant l’exécution de ton gestionnaire. OnValidationError te donne l’operation id et la liste des échecs, ainsi qu’un indicateur Continue qui décide si la requête est rejetée.

Le contexte de la requête : paramètres de chemin, de requête et de corps déjà analysés, et code de réponse, type de contenu et texte définis dans le gestionnaire.

L’authentification câblée depuis la spec

Les entrées securityScheme du document pilotent OnValidateAPIKey, OnValidateBasic et OnValidateBearer. Tu écris la recherche des identifiants, le composant analyse la requête et répond avec le bon statut quand la recherche dit non.

  • Clé API
  • HTTP Basic
  • Bearer
  • JWT
  • OAuth2
  • OpenID Connect
  • Swagger UI

Le serveur tourne sur le même serveur HTTP sgcWebSockets qui héberge tes endpoints WebSocket et tes fichiers statiques. Un seul port, un seul certificat TLS, un seul flux de journalisation. Le composant serveur OpenAPI →

Licences

Un produit, trois niveaux.

Un produit complet pour Delphi et C++ Builder : un parseur OpenAPI 3.x, un générateur de SDK Pascal natif, un composant serveur OpenAPI et plus de 1 195 SDK cloud prêts à l’emploi. Code source complet, déploiement sans redevances. Choisis selon la taille de ton équipe.

Single

Un développeur. Parseur, générateur, composant serveur et tous les SDK prêts à l’emploi.

€399 / 1 développeur

Team

Deux développeurs. Le même produit complet que Single.

€649 / 2 développeurs

Site

Développeurs illimités. Le même produit complet que Single.

€1,099 / développeurs illimités

sgcOpenAPI est licencié séparément. Le parseur, le générateur de code, le composant serveur et les plus de 1 195 SDK prêts à l’emploi sont inclus dans chaque niveau.

Comparer les niveaux et les prix
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

Génère dès aujourd’hui ton premier SDK Pascal.

Le parser, le générateur de code, le composant serveur OpenAPI et les plus de 1 195 SDK cloud préconçus, sur une seule licence. Code source complet, déploiement sans royalties, de Delphi 7 à RAD Studio 13.

Découvre aussi eSeGeCe

Autres produits d'eSeGeCe

sgcOpenAPI fait partie des bibliothèques de composants eSeGeCe pour Delphi, C++ Builder et .NET. Elles partagent les mêmes conventions, sont livrées avec le code source complet et se déploient sans redevances.

Packs, extensions et plus encore

Les derniers articles du blog

Voir tous les articles →

Tu vois la vue sgcOpenAPI 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