sgcOpenAPI Nie mehr REST-Clients von Hand schreiben. Spezifikation rein, Pascal raus.

Richte sgcOpenAPI auf ein OpenAPI-3.x-Dokument. Der Parser liest es ein, der Generator erzeugt ein natives Object-Pascal-SDK, und die OpenAPI-Server-Komponente veröffentlicht deine eigenen Endpunkte wieder als aktive Spezifikation.

  • OpenAPI 3.0 und 3.1
  • JSON und YAML
  • Swagger 2.0 automatisch konvertiert
  • Delphi 7 bis RAD Studio 13
  • C++ Builder
  • 1.195+Vorgefertigte Cloud-SDKs, generiert aus den offiziellen Spezifikationen
  • 280+Amazon-AWS-Dienste
  • 650+Microsoft-Azure-Dienste
  • 250+Google-Cloud-Dienste
  • 15+Microsoft-Graph-SDKs
Live ansehen

sgcOpenAPI in zwei Minuten.

Eine Spezifikation rein, Pascal raus, und an beiden Enden ein Server. Mit Sprecher und Untertiteln. Nichts wird heruntergeladen, bevor du auf Play drückst.

sgcOpenAPI-Schnellstart

Verwandle eine Spezifikation in Delphi-Code und Delphi-Code in einen laufenden Server.

  1. Einen Client generierenGib der Befehlszeile eine Eingabespezifikation und eine Ausgabedatei in Pascal. Die Eingabe kann eine Datei oder eine URL sein, als JSON oder YAML.
  2. Was dabei herauskommtGewöhnliches Pascal: Jede Operation wird zu einer Methode, jedes Schema zu einer Klasse. Mit -s entsteht stattdessen ein Server-Gerüst.
  3. Spec-First-ServerErzeuge TsgcWSAPIServer_OpenAPI, rufe LoadFromFile auf, behandle OnRequest, weise ihn deinem Server zu und setze Active.
  4. Code-First-ServerAnnotiere eine Delphi-Klasse mit Attributen, und die Spezifikation wird beim Start aus der Klasse generiert.
  5. ValidierungSchalte ValidateRequest und ValidateRequestBody ein, und ein Request, der nicht zur Spezifikation passt, erreicht deinen Code nie.
Bibliothek vorgefertigter SDKs

Vier Clouds, schon in Pascal.

Du musst nichts generieren, um loszulegen. Die vier größten Cloud-Plattformen liegen sgcOpenAPI als einsatzbereite Pascal-SDKs bei, aus den offiziellen Spezifikationen generiert und aktuell gehalten.

Amazon AWS, 280+ Dienste

REST-Dienst-SDKs für S3, EC2, Lambda, DynamoDB, SQS, SNS, CloudFormation und mehr. Nimm die Unit ins Projekt auf und rufe den Dienst mit typisierten Request- und Response-Klassen auf.

AWS-SDKs ansehen →

Microsoft Azure, 650+ Dienste

Die größte Sammlung der Bibliothek. Azure VMs, Blob Storage, Functions, Cosmos DB, Key Vault und der Rest der Azure Control Plane, jeweils als generierter Pascal-Client.

Azure-SDKs ansehen →

Google Cloud, 250+ Dienste

Compute Engine, Cloud Storage, BigQuery, Pub/Sub, Cloud Functions und mehr.

Google-SDKs ansehen →

Microsoft Graph, 15+ SDKs

Office 365, Microsoft Teams, OneDrive, Outlook und Active Directory, über die Graph API.

Microsoft-SDKs ansehen →

Jede andere Spezifikation

Wenn die API ein OpenAPI- oder Swagger-Dokument veröffentlicht, macht der Generator daraus dieselbe Art typisierter Pascal-Unit. Es gibt keine Positivliste.

Generator-Funktionen →

Jede Stufe, alles inklusive

Single, Team und Site enthalten alle den Parser, den Code-Generator, die OpenAPI-Server-Komponente und die komplette Bibliothek vorgefertigter SDKs. Nichts wird separat verkauft.

Alle vorgefertigten SDKs →

Ausgearbeitete Anleitungen, von der öffentlichen Spezifikation bis zum kompilierenden Delphi-Client

Die Pipeline

Spezifikation rein, kompilierender Code raus.

Fünf Schritte, alle in der IDE. Kein Node.js, kein Java-Code-Generator, keine Template-Engine, die du lernen musst.

# 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. Auf eine Spezifikation richtenRichte -i auf eine lokale Datei oder eine URL, als JSON oder YAML. Beides wird lokal gelesen, und ein Swagger-2.0-Dokument wird ebenfalls lokal nach OpenAPI 3 konvertiert.
  2. ParsenTsgcOpenAPI liest das Dokument in Paths, Components, Security, Servers, Tags und Info, und hält alles, was sich nicht umsetzen ließ, in Warningsfest. Externe $ref-Verweise werden vorher von TsgcOpenAPI_Bundle.
  3. GenerierenTsgcOpenAPI_Parser_Client_Pascal stammt von diesem Parser ab und schreibt eine einzige Pascal-Unit: eine Methode pro Operation, eine Response-Klasse pro Methode und eine Klasse für jedes Schema, mit den Beschreibungen aus dem Dokument als Kommentaren.
  4. KompilierenNimm die generierte Unit ins Projekt auf und trag sie in eine uses-Klausel ein. Außer dem sgcOpenAPI- Source -Ordner muss nichts im Bibliothekspfad liegen, von Delphi 7 bis RAD Studio 13. Typisierte Antworten brauchen XE7 oder neuer.
  5. AufrufenAufrufen GetOpenAPIClient, setze die Zugangsdaten auf Authentication, und ruf die Operation auf. Die Basis-URL steckt bereits drin, sie stammt aus dem servers -Eintrag des Dokuments.

Der Generator stammt vom Parser ab, du kannst also auch selbst ein TsgcOpenAPI erzeugen, das geparste Modell durchlaufen und eigenes Tooling darauf aufbauen. Die Parser-Komponente →

Die Serverseite

Die Spezifikation ausliefern, nicht nur konsumieren.

TsgcWSAPIServer_OpenAPI hängt sich an einen TsgcHTTPServer, routet eingehende Requests anhand des Dokuments, das du geladen hast, validiert sie, bevor dein Handler läuft, und liefert das Dokument und eine Swagger UI über denselben Port aus.

Spec-First: Eine Delphi-Unit lädt petstore.json in TsgcWSAPIServer_OpenAPI, und die Routentabelle wird aus der Spezifikation aufgebaut.

Was dir das bringt

GET /pets/{petId} erreicht deinen OnRequest Handler mit aOperationId gleich getPetById. GET /openapi.json liefert das Dokument zurück, das du geladen hast, und GET /docs öffnet Swagger UI, beide eingeschaltet über Endpoint.ServeSpec und Endpoint.ServeSwaggerUI. Endpoint.BasePath schiebt die beiden unter ein Präfix.

Code-First: Eine Delphi-Klasse, annotiert mit den Attributen sgcServiceContract, sgcRoute und sgcHttpGet, und das daraus beim Start generierte OpenAPI-Dokument.

Spec-first oder Code-first

Lade einen JSON-Vertrag mit LoadFromFile und verteile nach der Operation-ID, oder annotiere eine Pascal-Klasse mit sgcServiceContract, sgcHttpGet, sgcRoute und sgcFromBody und lass TsgcOpenAPICodeFirstScanner das Dokument bauen. Code-First braucht Delphi XE7 oder neuer. Beide Demos liegen in Demos\30.Server\.

Validierung: Requests, die nicht zur Spezifikation passen, werden mit 400 Bad Request beantwortet, bevor der OnRequest-Handler läuft.

Validierung, bevor dein Handler läuft

Validation.ValidateRequest, ValidateRequired und ValidateRequestBody prüfen den eingehenden Request gegen das Dokument, bevor dein Handler läuft. OnValidationError übergibt dir die Operation-ID und die Liste der Fehler, dazu ein Continue Flag, das entscheidet, ob der Request abgewiesen wird.

Der Request-Kontext: Pfad-, Query- und Body-Parameter bereits geparst, und Antwortcode, Content-Type und Text, die im Handler gesetzt werden.

Auth direkt aus der Spezifikation verdrahtet

Die securityScheme -Einträge im Dokument steuern OnValidateAPIKey, OnValidateBasic und OnValidateBearer. Du schreibst die Prüfung der Zugangsdaten, die Komponente parst den Request und antwortet mit dem richtigen Status, wenn die Prüfung ablehnt.

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

Der Server läuft auf demselben sgcWebSockets-HTTP-Server, der deine WebSocket-Endpunkte und statischen Dateien hostet. Ein Port, ein TLS-Zertifikat, ein Log-Stream. Die OpenAPI-Server-Komponente →

Lizenzierung

Ein Produkt, drei Stufen.

Ein gebündeltes Produkt für Delphi und C++ Builder: ein OpenAPI-3.x-Parser, ein nativer Pascal-SDK-Generator, eine OpenAPI-Server-Komponente und über 1.195 vorgefertigte Cloud-SDKs. Vollständiger Quellcode, lizenzgebührenfreie Bereitstellung. Wähle nach Teamgröße.

Single

Ein Entwickler. Parser, Generator, Server-Komponente und jedes vorgefertigte SDK.

€399 / 1 Entwickler

Team

Zwei Entwickler. Dasselbe komplette Produkt wie Single.

€649 / 2 Entwickler

Site

Unbegrenzt viele Entwickler. Dasselbe komplette Produkt wie Single.

€1,099 / unbegrenzt viele Entwickler

sgcOpenAPI wird eigenständig lizenziert. Parser, Code-Generator, Server-Komponente und alle 1.195+ vorgefertigten SDKs sind in jeder Stufe enthalten.

Stufen und Preise vergleichen
REFERENZEN

Was Entwickler sagen

Vertrauen von Delphi-, C++ Builder-, Lazarus- und .NET-Entwicklern weltweit.

Eure sgcWebSockets-Bibliothek ist sehr nützlich und einfach einzurichten. Macht weiter so!
Simone Moretti Delphi-Entwickler
sgcWebSockets ist großartig und euer Support ist der beste!
Christian Meyer Gründer & CTO
Vielen Dank für eure Hilfe und Unterstützung, ich liebe eure Komponenten.
Mark Steinfeld CTO

Generiere noch heute dein erstes Pascal-SDK.

Parser, Code-Generator, OpenAPI-Server-Komponente und alle 1.195+ vorgefertigten Cloud-SDKs, in einer Lizenz. Vollständiger Quellcode, lizenzgebührenfreie Bereitstellung, Delphi 7 bis RAD Studio 13.

Mehr von eSeGeCe

Weitere Produkte von eSeGeCe

sgcOpenAPI ist eine der eSeGeCe-Komponentenbibliotheken für Delphi, C++ Builder und .NET. Sie teilen dieselben Konventionen, werden mit vollständigem Quellcode ausgeliefert und lizenzgebührenfrei eingesetzt.

Pakete, Add-ons und mehr

Neues aus dem Blog

Alle Beiträge ansehen →

Du siehst gerade die Ansicht sgcOpenAPI von eSeGeCe.

Zeig mir eine andere Perspektive →
30 Tage Geld-zurück-GarantieNicht zufrieden? Fordere innerhalb von 30 Tagen nach dem Kauf eine vollständige Rückerstattung an. Rückerstattungsrichtlinie ansehen