sgcOpenAPI Basta scrivere a mano i client REST. Specifica in ingresso, Pascal in uscita.

Punta sgcOpenAPI a un documento OpenAPI 3.x. Il parser lo legge, il generatore produce un SDK Object Pascal nativo e il componente server OpenAPI pubblica i tuoi endpoint come specifica live.

  • OpenAPI 3.0 e 3.1
  • JSON e YAML
  • Swagger 2.0 convertito in automatico
  • Da Delphi 7 a RAD Studio 13
  • C++ Builder
  • 1,195+SDK cloud precompilati, generati dalle specifiche ufficiali
  • 280+Servizi Amazon AWS
  • 650+Servizi Microsoft Azure
  • 250+Servizi Google Cloud
  • 15+SDK Microsoft Graph
Guardalo in azione

Scopri sgcOpenAPI in due minuti.

Una specifica in ingresso, Pascal in uscita e un server a entrambe le estremità. Con voce narrante e sottotitoli. Non viene scaricato nulla finché non premi play.

Guida rapida di sgcOpenAPI

Trasforma una specifica in codice Delphi e il codice Delphi in un server in esecuzione.

  1. Genera un clientPassa alla riga di comando una specifica di input e un file Pascal di output. L'input può essere un file o un URL, in JSON o YAML.
  2. Cosa ottieniPascal normale: ogni operazione diventa un metodo, ogni schema diventa una classe. Aggiungi -s per ottenere invece uno scheletro di server.
  3. Server Spec-FirstCrea TsgcWSAPIServer_OpenAPI, chiama LoadFromFile, gestisci OnRequest, assegnalo al tuo server e imposta Active.
  4. Server Code-FirstAnnota una classe Delphi con gli attributi e la specifica viene generata dalla classe all'avvio.
  5. ValidazioneAttiva ValidateRequest e ValidateRequestBody e una richiesta non conforme alla specifica non raggiunge mai il tuo codice.
Libreria di SDK precompilati

Quattro cloud, già in Pascal.

Non devi generare nulla per iniziare. Le quattro maggiori piattaforme cloud arrivano come SDK Pascal pronti all'uso dentro sgcOpenAPI, generati dalle specifiche ufficiali e mantenuti aggiornati.

Amazon AWS, oltre 280 servizi

SDK di servizi REST che coprono S3, EC2, Lambda, DynamoDB, SQS, SNS, CloudFormation e altro ancora. Inserisci la unit nel progetto e chiama il servizio con classi di richiesta e risposta tipizzate.

Vedi gli SDK AWS →

Microsoft Azure, oltre 650 servizi

Il set più ampio della libreria. Azure VM, Blob Storage, Functions, Cosmos DB, Key Vault e il resto del control plane di Azure, ognuno con il suo client Pascal generato.

Vedi gli SDK Azure →

Google Cloud, oltre 250 servizi

Compute Engine, Cloud Storage, BigQuery, Pub/Sub, Cloud Functions e altro ancora.

Vedi gli SDK Google →

Microsoft Graph, oltre 15 SDK

Office 365, Microsoft Teams, OneDrive, Outlook e Active Directory, tramite la Graph API.

Vedi gli SDK Microsoft →

Qualsiasi altra specifica

Se l'API pubblica un documento OpenAPI o Swagger, il generatore lo trasforma nello stesso tipo di unit Pascal tipizzata. Non esiste alcuna lista di API ammesse.

Funzionalità del generatore →

Ogni livello, tutto incluso

Single, Team e Site includono il parser, il generatore di codice, il componente server OpenAPI e l'intera libreria di SDK precompilati. Nulla viene venduto separatamente.

Tutti gli SDK precompilati →

Guide pratiche, da una specifica pubblica a un client Delphi che compila

La pipeline

Specifica in ingresso, codice che compila in uscita.

Cinque passaggi, tutti dentro l'IDE. Niente Node.js, nessun generatore di codice Java, nessun template engine da imparare.

# 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. Puntalo su una specificaPunta -i su un file locale o su un URL, in JSON o in YAML. Entrambi vengono letti in locale, e anche un documento Swagger 2.0 viene convertito in OpenAPI 3 in locale.
  2. AnalizzaTsgcOpenAPI legge il documento dentro Paths, Componenti, Security, Servers, Tags e Info, e registra in Warningstutto quello che non ha potuto rispettare. I puntatori $ref esterni vengono risolti prima da TsgcOpenAPI_Bundle.
  3. GeneraTsgcOpenAPI_Parser_Client_Pascal discende da quel reader e scrive una sola unit Pascal: un metodo per operazione, una classe di response per metodo, e una classe per ogni schema, con le descrizioni del documento come commenti.
  4. CompilaAggiungi al progetto la unit generata e mettila in una clausola uses. Nel library path non serve nient'altro che la cartella Source di sgcOpenAPI, da Delphi 7 a RAD Studio 13. Le response tipizzate richiedono XE7 o successivo.
  5. ChiamaChiama GetOpenAPIClient, imposta le credenziali su Autenticazione, e chiama l'operazione. La base URL è già incorporata a partire dalla voce servers del documento.

Il generatore discende dal reader, quindi puoi anche creare tu stesso TsgcOpenAPI , percorrere il modello analizzato e costruirci sopra i tuoi strumenti. Il componente parser →

Il lato server

Pubblica la specifica, non limitarti a consumarla.

TsgcWSAPIServer_OpenAPI si aggancia a un TsgcHTTPServer, instrada le richieste in arrivo secondo il documento che hai caricato, le valida prima che il tuo gestore venga eseguito, e pubblica il documento e una Swagger UI dalla stessa porta.

Spec-First: una unit Delphi carica petstore.json in TsgcWSAPIServer_OpenAPI e la tabella delle route viene costruita dalla specifica.

Cosa ottieni

GET /pets/{petId} arriva al tuo gestore OnRequest con aOperationId impostato a getPetById. GET /openapi.json restituisce il documento che hai caricato e GET /docs apre Swagger UI, attivati entrambi da Endpoint.ServeSpec e Endpoint.ServeSwaggerUI. Endpoint.BasePath sposta la coppia sotto un prefisso.

Code-First: una classe Delphi annotata con gli attributi sgcServiceContract, sgcRoute e sgcHttpGet e il documento OpenAPI generato da essa all'avvio.

Spec-first o code-first

Carica un contratto JSON con LoadFromFile e smista in base all'operation id, oppure annota una classe Pascal con sgcServiceContract, sgcHttpGet, sgcRoute e sgcFromBody e lascia che sia TsgcOpenAPICodeFirstScanner costruisca il documento. Code-First richiede Delphi XE7 o successivo. Entrambe le demo si trovano in Demos\30.Server\.

Validazione: le richieste non conformi alla specifica ricevono la risposta 400 Bad Request prima che venga eseguito il gestore OnRequest.

Validazione prima che il tuo gestore venga eseguito

Validation.ValidateRequest, ValidateRequired e ValidateRequestBody controllano la richiesta in arrivo rispetto al documento prima che il tuo gestore venga eseguito. OnValidationError ti passa l'operation id e l'elenco degli errori, più un flag Continue che decide se la richiesta viene rifiutata.

Il contesto della richiesta: parametri di percorso, query e corpo già analizzati, e codice di risposta, tipo di contenuto e testo impostati nel gestore.

Autenticazione cablata dalla specifica

Le voci securityScheme del documento pilotano OnValidateAPIKey, OnValidateBasic e OnValidateBearer. Tu scrivi la ricerca delle credenziali, il componente fa il parsing della richiesta e risponde con lo status giusto quando la ricerca dà esito negativo.

  • API Key
  • HTTP Basic
  • Bearer
  • JWT
  • OAuth2
  • OpenID Connect
  • Swagger UI

Il server gira sullo stesso server HTTP di sgcWebSockets che ospita i tuoi endpoint WebSocket e i file statici. Una sola porta, un solo certificato TLS, un solo flusso di log. Il componente server OpenAPI →

Licenze

Un prodotto, tre livelli.

Un unico prodotto per Delphi e C++ Builder: un parser OpenAPI 3.x, un generatore nativo di SDK Pascal, un componente server OpenAPI e oltre 1.195 SDK cloud precompilati. Codice sorgente completo, distribuzione senza royalty. Scegli in base alla dimensione del team.

Single

Uno sviluppatore. Parser, generatore, componente server e ogni SDK precompilato.

€399 / 1 sviluppatore

Team

Due sviluppatori. Lo stesso prodotto completo di Single.

€649 / 2 sviluppatori

Site

Sviluppatori illimitati. Lo stesso prodotto completo di Single.

€1,099 / sviluppatori illimitati

sgcOpenAPI ha una licenza propria. Parser, generatore di codice, componente server e tutti gli oltre 1.195 SDK precompilati sono inclusi in ogni livello.

Confronta livelli e prezzi
Testimonianze

Cosa dicono gli sviluppatori

Scelta da sviluppatori Delphi, C++ Builder, Lazarus e .NET in tutto il mondo.

La vostra libreria sgcWebSockets è molto utile e semplice da configurare. Continuate così!
Simone Moretti Sviluppatore Delphi
sgcWebSockets è straordinario e il vostro supporto è il migliore!
Christian Meyer Fondatore e CTO
Grazie mille per il vostro aiuto e supporto, adoro i vostri componenti.
Mark Steinfeld CTO

Genera oggi il tuo primo SDK Pascal.

Parser, generatore di codice, componente server OpenAPI e tutti gli oltre 1.195 SDK cloud precompilati, con un'unica licenza. Sorgente completo, distribuzione senza royalty, da Delphi 7 a RAD Studio 13.

Altro da eSeGeCe

Altri prodotti di eSeGeCe

sgcOpenAPI è una delle librerie di componenti eSeGeCe per Delphi, C++ Builder e .NET. Condividono le stesse convenzioni, includono il codice sorgente completo e si distribuiscono senza royalty.

Pacchetti, componenti aggiuntivi e altro

Le ultime dal blog

Vedi tutti gli articoli →

Questa è la vista sgcOpenAPI di eSeGeCe.

Mostrami un altro punto di vista →
Garanzia soddisfatti o rimborsati di 30 giorniNon sei soddisfatto? Richiedi un rimborso completo entro 30 giorni dall'acquisto. Vedi la politica di rimborso