sgcOpenAPI Stop met het handmatig schrijven van Stop met het handmatig schrijven van REST-clients.

Spec erin, Pascal eruit.

  • OpenAPI 3.0 en 3.1
  • JSON en YAML
  • Swagger 2.0 automatisch geconverteerd
  • Delphi 7 tot en met RAD Studio 13
  • C++ Builder
  • 1.195+Kant-en-klare cloud-SDK's, gegenereerd uit de officiële specificaties
  • 280+Amazon AWS-services
  • 650+Microsoft Azure-services
  • 250+Google Cloud-services
  • 15+Microsoft Graph-SDK's
Zie het draaien

Zie sgcOpenAPI in twee minuten.

Een specificatie erin, Pascal eruit, en aan beide kanten een server. Ingesproken en ondertiteld. Er wordt niets gedownload voordat je op afspelen drukt.

sgcOpenAPI quickstart

Zet een specificatie om in Delphi-code, en Delphi-code in een draaiende server.

  1. Een client genererenGeef de opdrachtregel een invoerspecificatie en een Pascal-uitvoerbestand. De invoer kan een bestand of een URL zijn, JSON of YAML.
  2. Wat eruit komtGewone Pascal: elke operatie wordt een methode, elk schema wordt een klasse. Voeg -s toe voor een serverskelet.
  3. Spec-First-serverMaak TsgcWSAPIServer_OpenAPI aan, roep LoadFromFile aan, handel OnRequest af, koppel hem aan je server en zet hem op Active.
  4. Code-First-serverAnnoteer een Delphi-klasse met attributen en de specificatie wordt bij het opstarten uit de klasse gegenereerd.
  5. ValidatieSchakel ValidateRequest en ValidateRequestBody in en een verzoek dat niet met de specificatie overeenkomt, bereikt je code nooit.
Bibliotheek met kant-en-klare SDK's

Vier clouds, al in Pascal.

Je hoeft niets te genereren om te beginnen. De vier grootste cloudplatforms worden als kant-en-klare Pascal-SDK's meegeleverd in sgcOpenAPI, gegenereerd uit de officiële specificaties en up-to-date gehouden.

Amazon AWS, 280+ services

REST-service-SDK's voor S3, EC2, Lambda, DynamoDB, SQS, SNS, CloudFormation en meer. Zet de unit in je project en roep de service aan met getypeerde request- en response-classes.

Bekijk de AWS-SDK's →

Microsoft Azure, 650+ services

De grootste set in de bibliotheek. Azure VM's, Blob Storage, Functions, Cosmos DB, Key Vault en de rest van de Azure-control-plane, elk een gegenereerde Pascal-client.

Bekijk de Azure-SDK's →

Elke andere spec

Als de API een OpenAPI- of Swagger-document publiceert, maakt de generator er dezelfde soort getypeerde Pascal-unit van. Er is geen allowlist.

Functies van de generator →

Elk niveau, alles inbegrepen

Single, Team en Site bevatten allemaal de parser, de codegenerator, de OpenAPI-servercomponent en de volledige bibliotheek met kant-en-klare SDK's. Niets wordt apart verkocht.

Alle kant-en-klare SDK's →

Uitgewerkte handleidingen, van een openbare specificatie tot een compilerende Delphi-client

De pipeline

Spec erin, compilerende code eruit.

Vijf stappen, allemaal binnen de IDE. Geen Node.js, geen Java-codegenerator, geen template-engine om te leren.

# 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. Richt het op een specRicht -i op een lokaal bestand of een URL, in JSON of YAML. Beide worden lokaal gelezen en een Swagger 2.0-document wordt ook lokaal naar OpenAPI 3 omgezet.
  2. ParsenTsgcOpenAPI leest het document in Paths, Components, Security, Servers, Tags en Info, en legt alles vast wat het niet kon verwerken in Warnings. Externe $ref pointers worden vooraf binnengehaald door TsgcOpenAPI_Bundle.
  3. GenererenTsgcOpenAPI_Parser_Client_Pascal stamt af van die lezer en schrijft één Pascal-unit: één methode per operatie, één response-klasse per methode, en een klasse voor elk schema, met de beschrijvingen uit het document als commentaar.
  4. CompilerenVoeg de gegenereerde unit toe aan het project en zet hem in een uses-clausule. Op het bibliotheekpad hoeft verder niets te staan dan de sgcOpenAPI Source map, op Delphi 7 tot en met RAD Studio 13. Getypeerde responses vereisen XE7 of hoger.
  5. AanroepenRoep GetOpenAPIClient, stel de inloggegevens in op Authentication, en roep de operatie aan. De basis-URL zit er al in, overgenomen uit de servers -entry van het document.

De generator stamt af van de lezer, dus je kunt ook zelf TsgcOpenAPI aanmaken, het geparste model doorlopen en er je eigen tooling bovenop bouwen. De parsercomponent →

De serverkant

Serveer de spec, consumeer hem niet alleen.

TsgcWSAPIServer_OpenAPI koppelt zich aan een TsgcHTTPServer, routeert binnenkomende verzoeken aan de hand van het geladen document, valideert ze voordat je handler draait en serveert het document en een Swagger UI vanaf dezelfde poort.

Spec-First: een Delphi-unit laadt petstore.json in TsgcWSAPIServer_OpenAPI en de routetabel wordt opgebouwd uit de specificatie.

Wat je daarmee krijgt

GET /pets/{petId} bereikt je OnRequest handler met aOperationId ingesteld op getPetById. GET /openapi.json geeft het geladen document terug en GET /docs opent Swagger UI, allebei ingeschakeld door Endpoint.ServeSpec en Endpoint.ServeSwaggerUI. Endpoint.BasePath verplaatst het paar onder een prefix.

Code-First: een Delphi-klasse geannoteerd met de attributen sgcServiceContract, sgcRoute en sgcHttpGet, en het OpenAPI-document dat daaruit bij het opstarten wordt gegenereerd.

Spec-first of code-first

Laad een JSON-contract met LoadFromFile en verwerk op operation-id, of annoteer een Pascal-klasse met sgcServiceContract, sgcHttpGet, sgcRoute en sgcFromBody en laat TsgcOpenAPICodeFirstScanner het document bouwen. Code-First vereist Delphi XE7 of hoger. Beide demo's staan in Demos\30.Server\.

Validatie: verzoeken die niet met de specificatie overeenkomen, worden beantwoord met 400 Bad Request voordat de OnRequest-handler draait.

Validatie voordat je handler draait

Validation.ValidateRequest, ValidateRequired en ValidateRequestBody controleren het binnenkomende verzoek aan de hand van het document voordat je handler draait. OnValidationError geeft je de operation-id en de lijst met fouten, plus een Continue -vlag die bepaalt of het verzoek wordt geweigerd.

De requestcontext: pad-, query- en bodyparameters al geparsed, en de responscode, het contenttype en de tekst ingesteld in de handler.

Authenticatie rechtstreeks uit de spec

De securityScheme -entries in het document sturen OnValidateAPIKey, OnValidateBasic en OnValidateBearer. Jij schrijft de opzoeking van de inloggegevens, het component parst het verzoek en antwoordt met de juiste status als de opzoeking nee zegt.

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

De server draait op dezelfde sgcWebSockets HTTP-server die je WebSocket-endpoints en statische bestanden host. Eén poort, één TLS-certificaat, één logstroom. Het OpenAPI-servercomponent →

Licenties

Eén product, drie niveaus.

Eén gebundeld product voor Delphi en C++ Builder: een OpenAPI 3.x-parser, een native Pascal SDK-generator, een OpenAPI-servercomponent en 1.195+ kant-en-klare cloud-SDK's. Volledige broncode, royaltyvrije distributie. Kies op teamgrootte.

Single

Eén ontwikkelaar. Parser, generator, servercomponent en elke kant-en-klare SDK.

€399 / 1 ontwikkelaar

Team

Twee ontwikkelaars. Hetzelfde complete product als Single.

€649 / 2 ontwikkelaars

Site

Onbeperkt aantal ontwikkelaars. Hetzelfde complete product als Single.

€1,099 / onbeperkt aantal ontwikkelaars

sgcOpenAPI wordt los gelicentieerd. Parser, codegenerator, servercomponent en alle 1.195+ kant-en-klare SDK's zijn in elk niveau inbegrepen.

Vergelijk niveaus en prijzen
REFERENTIES

Wat ontwikkelaars zeggen

Vertrouwd door Delphi-, C++ Builder-, Lazarus- en .NET-ontwikkelaars over de hele wereld.

Jullie sgcWebSockets-bibliotheek is erg handig en eenvoudig op te zetten. Ga zo door!
Simone Moretti Delphi-ontwikkelaar
sgcWebSockets is geweldig en jullie support is de beste!
Christian Meyer Oprichter & CTO
Heel erg bedankt voor jullie hulp en ondersteuning, ik ben dol op jullie componenten.
Mark Steinfeld CTO

Genereer vandaag je eerste Pascal SDK.

Parser, codegenerator, OpenAPI-servercomponent en alle 1.195+ kant-en-klare cloud-SDK's, op één licentie. Volledige broncode, royaltyvrije implementatie, Delphi 7 tot en met RAD Studio 13.

Meer van eSeGeCe

Andere producten van eSeGeCe

sgcOpenAPI is een van de eSeGeCe-componentbibliotheken voor Delphi, C++ Builder en .NET. Ze delen conventies, worden met volledige broncode geleverd en worden royaltyvrij gedistribueerd.

Pakketten, add-ons en meer

Laatste blogberichten

Bekijk alle berichten →

Je bekijkt nu de sgcOpenAPI-weergave van eSeGeCe.

Toon me een andere kant →
Niet-goed-geld-terug-garantie van 30 dagenNiet tevreden? Vraag binnen 30 dagen na aankoop een volledige terugbetaling aan. Bekijk het terugbetalingsbeleid