sgcOpenAPI Przestań ręcznie pisać klientów REST. Specyfikacja na wejściu, Pascal na wyjściu.

Wskaż sgcOpenAPI dokument OpenAPI 3.x. Parser go odczytuje, generator tworzy natywne SDK w Object Pascalu, a komponent serwera OpenAPI publikuje Twoje własne endpointy z powrotem jako żywą specyfikację.

  • OpenAPI 3.0 i 3.1
  • JSON i YAML
  • Swagger 2.0 konwertowany automatycznie
  • Delphi 7 do RAD Studio 13
  • C++ Builder
  • 1,195+Gotowe SDK chmurowe, wygenerowane z oficjalnych specyfikacji
  • 280+Usługi Amazon AWS
  • 650+Usługi Microsoft Azure
  • 250+Usługi Google Cloud
  • 15+SDK Microsoft Graph
Zobacz, jak działa

Zobacz sgcOpenAPI w dwie minuty.

Specyfikacja na wejściu, Pascal na wyjściu, a serwer po obu stronach. Z lektorem i napisami. Nic nie jest pobierane, dopóki nie naciśniesz odtwarzania.

Szybki start sgcOpenAPI

Zamień specyfikację w kod Delphi, a kod Delphi w działający serwer.

  1. Wygeneruj klientaPodaj wierszowi poleceń specyfikację wejściową i wyjściowy plik Pascala. Wejściem może być plik lub adres URL, w formacie JSON lub YAML.
  2. Co z tego wychodziZwykły Pascal: każda operacja staje się metodą, a każdy schemat klasą. Dodaj -s, aby zamiast tego otrzymać szkielet serwera.
  3. Serwer Spec-FirstUtwórz TsgcWSAPIServer_OpenAPI, wywołaj LoadFromFile, obsłuż OnRequest, przypisz go do swojego serwera i ustaw Active.
  4. Serwer Code-FirstOpisz klasę Delphi atrybutami, a specyfikacja zostanie wygenerowana z tej klasy przy starcie.
  5. WalidacjaWłącz ValidateRequest i ValidateRequestBody, a żądanie niezgodne ze specyfikacją nigdy nie dotrze do Twojego kodu.
Biblioteka gotowych SDK

Cztery chmury, już w Pascalu.

Nie musisz niczego generować, żeby zacząć. Cztery największe platformy chmurowe są dostarczane jako gotowe do użycia SDK w Pascalu wewnątrz sgcOpenAPI, wygenerowane z oficjalnych specyfikacji i utrzymywane na bieżąco.

Amazon AWS, ponad 280 usług

SDK usług REST obejmujące S3, EC2, Lambda, DynamoDB, SQS, SNS, CloudFormation i inne. Wrzuć moduł do projektu i wywołuj usługę z typowanymi klasami żądań i odpowiedzi.

Zobacz SDK AWS →

Microsoft Azure, ponad 650 usług

Największy zestaw w bibliotece. Maszyny wirtualne Azure, Blob Storage, Functions, Cosmos DB, Key Vault i reszta warstwy sterowania Azure, każda jako wygenerowany klient w Pascalu.

Zobacz SDK Azure →

Google Cloud, ponad 250 usług

Compute Engine, Cloud Storage, BigQuery, Pub/Sub, Cloud Functions i inne.

Zobacz SDK Google →

Microsoft Graph, ponad 15 SDK

Office 365, Microsoft Teams, OneDrive, Outlook i Active Directory, przez Graph API.

Zobacz SDK Microsoft →

Dowolna inna specyfikacja

Jeśli API publikuje dokument OpenAPI lub Swagger, generator zamienia go w taki sam typowany moduł Pascala. Nie ma żadnej listy dozwolonych.

Funkcje generatora →

Każdy poziom, wszystko w komplecie

Single, Team i Site zawierają parser, generator kodu, komponent serwera OpenAPI i całą bibliotekę gotowych SDK. Nic nie jest sprzedawane osobno.

Wszystkie gotowe SDK →

Przewodniki krok po kroku, od publicznej specyfikacji do kompilującego się klienta Delphi

Przebieg

Specyfikacja na wejściu, kompilujący się kod na wyjściu.

Pięć kroków, wszystkie wewnątrz IDE. Bez Node.js, bez generatora kodu w Javie, bez silnika szablonów do nauczenia.

# 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. Wskaż mu specyfikacjęWskaż -i na plik lokalny lub adres URL, w JSON lub YAML. Oba są czytane lokalnie, a dokument Swagger 2.0 jest lokalnie konwertowany do OpenAPI 3.
  2. ParsujTsgcOpenAPI wczytuje dokument do Paths, Komponenty, Security, Servers, Tags i Info, a wszystko, czego nie mógł uwzględnić, zapisuje w Warnings. Zewnętrzne wskaźniki $ref są wcześniej wciągane przez TsgcOpenAPI_Bundle.
  3. GenerujTsgcOpenAPI_Parser_Client_Pascal dziedziczy po tym czytniku i zapisuje jedną jednostkę Pascala: jedną metodę na operację, jedną klasę odpowiedzi na metodę i klasę dla każdego schematu, z opisami z dokumentu jako komentarzami.
  4. KompilujDodaj wygenerowaną jednostkę do projektu i wpisz ją do klauzuli uses. Na ścieżce bibliotek nie musi być nic poza folderem Source sgcOpenAPI, od Delphi 7 do RAD Studio 13. Typowane odpowiedzi wymagają XE7 lub nowszego.
  5. WywołajWywołaj GetOpenAPIClient, ustaw poświadczenia na Uwierzytelnianiei wywołaj operację. Bazowy adres URL jest już wbudowany z wpisu servers w dokumencie.

Generator dziedziczy po czytniku, więc możesz też sam utworzyć TsgcOpenAPI , przejść po sparsowanym modelu i zbudować na nim własne narzędzia. Komponent parsera →

Strona serwerowa

Udostępniaj specyfikację, nie tylko ją konsumuj.

TsgcWSAPIServer_OpenAPI podpina się do TsgcHTTPServer, kieruje przychodzące żądania zgodnie z wczytanym dokumentem, waliduje je, zanim uruchomi się twoja procedura obsługi, i serwuje dokument oraz Swagger UI z tego samego portu.

Spec-First: jednostka Delphi wczytuje petstore.json do TsgcWSAPIServer_OpenAPI, a tablica tras jest budowana ze specyfikacji.

Co to daje

GET /pets/{petId} trafia do Twojej procedury OnRequest z parametrem aOperationId ustawiona na getPetById. GET /openapi.json zwraca wczytany dokument, a GET /docs otwiera Swagger UI, obie rzeczy włączane przez Endpoint.ServeSpec i Endpoint.ServeSwaggerUI. Endpoint.BasePath przenosi tę parę pod wybrany prefiks.

Code-First: klasa Delphi opisana atrybutami sgcServiceContract, sgcRoute i sgcHttpGet oraz dokument OpenAPI wygenerowany z niej przy starcie.

Spec-first lub code-first

Wczytaj kontrakt JSON przez LoadFromFile i rozdzielaj po identyfikatorze operacji, albo opisz klasę Pascala atrybutami sgcServiceContract, sgcHttpGet, sgcRoute i sgcFromBody i pozwól TsgcOpenAPICodeFirstScanner zbudują dokument. Code-First wymaga Delphi XE7 lub nowszego. Oba dema znajdziesz w Demos\30.Server\.

Walidacja: żądania niezgodne ze specyfikacją otrzymują odpowiedź 400 Bad Request, zanim zadziała procedura OnRequest.

Walidacja przed uruchomieniem procedury obsługi

Validation.ValidateRequest, ValidateRequired i ValidateRequestBody sprawdzają przychodzące żądanie względem dokumentu, zanim uruchomi się twoja procedura obsługi. OnValidationError podaje ci identyfikator operacji i listę niezgodności oraz flagę Continue , która decyduje, czy żądanie zostanie odrzucone.

Kontekst żądania: parametry ścieżki, zapytania i treści już sparsowane oraz kod odpowiedzi, typ zawartości i tekst ustawione w procedurze obsługi.

Uwierzytelnianie podpięte ze specyfikacji

Wpisy securityScheme w dokumencie napędzają OnValidateAPIKey, OnValidateBasic i OnValidateBearer. Ty piszesz wyszukiwanie poświadczeń, komponent parsuje żądanie i odpowiada właściwym statusem, kiedy wyszukiwanie mówi nie.

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

Serwer działa na tym samym serwerze HTTP sgcWebSockets, który hostuje twoje endpointy WebSocket i pliki statyczne. Jeden port, jeden certyfikat TLS, jeden strumień logów. Komponent serwera OpenAPI →

Licencjonowanie

Jeden produkt, trzy poziomy.

Jeden zintegrowany produkt dla Delphi i C++ Builder: parser OpenAPI 3.x, natywny generator SDK w Pascalu, komponent serwera OpenAPI oraz ponad 1195 gotowych SDK chmurowych. Pełny kod źródłowy, wdrożenie bez opłat licencyjnych. Wybierz według wielkości zespołu.

Single

Jeden programista. Parser, generator, komponent serwera i wszystkie gotowe SDK.

€399 / 1 programista

Team

Dwóch programistów. Ten sam kompletny produkt co w Single.

€649 / 2 programistów

Site

Nieograniczona liczba programistów. Ten sam kompletny produkt co w Single.

€1,099 / bez limitu programistów

sgcOpenAPI jest licencjonowany osobno. Parser, generator kodu, komponent serwera i wszystkie ponad 1195 gotowych SDK są w każdym poziomie.

Porównaj poziomy i ceny
REFERENCJE

Co mówią programiści

Zaufali nam programiści Delphi, C++ Builder, Lazarus i .NET na całym świecie.

Wasza biblioteka sgcWebSockets jest bardzo przydatna i łatwa w konfiguracji. Tak trzymać!
Simone Moretti Programista Delphi
sgcWebSockets jest niesamowity, a wasze wsparcie jest najlepsze!
Christian Meyer Założyciel i CTO
Bardzo dziękuję za pomoc i wsparcie, uwielbiam wasze komponenty.
Mark Steinfeld CTO

Wygeneruj swoje pierwsze SDK w Pascalu już dziś.

Parser, generator kodu, komponent serwera OpenAPI i wszystkie gotowe SDK chmurowe, ponad 1 195 z nich, na jednej licencji. Pełne źródła, wdrożenie bez opłat licencyjnych, od Delphi 7 do RAD Studio 13.

Więcej od eSeGeCe

Inne produkty eSeGeCe

sgcOpenAPI to jedna z bibliotek komponentów eSeGeCe dla Delphi, C++ Builder i .NET. Mają wspólne konwencje, są dostarczane z pełnym kodem źródłowym i wdrażane bez opłat licencyjnych.

Pakiety, dodatki i więcej

Najnowsze wpisy na blogu

Zobacz wszystkie wpisy →

Oglądasz widok sgcOpenAPI eSeGeCe.

Pokaż mi inne ujęcie →
30-dniowa gwarancja zwrotu pieniędzyNie jesteś zadowolony? Poproś o pełny zwrot pieniędzy w ciągu 30 dni od zakupu. Zobacz politykę zwrotów