Generieren Sie die Delphi -Client -SDKs für jede mit der OpenAPI -Spezifikation definierte REST -API.
Dieser Generator kann ein OpenAPI -Dokument (aus lokaler Datei oder URL) einer REST -API lesen und Delphi -Klassen generieren, mit denen Sie solche REST -API -Endpunkte auf freundliche Weise aufrufen können.
Der Generator erstellt die DTO -Klassen (die die von der API verwendeten JSON -Definitionen darstellen) und die Schnittstellen mit Methoden, die Sie aufrufen können (die die zu aufgerufenen Endpunkte darstellen).
Laden Sie die Binärdateien und dekomprimieren Sie in einem Ordner in Ihrer Festplatte. Der Generator ist eine einzelne Befehlszeilen-EXE-Datei mit dem Namen OpenApiDelphiGen.exe . Führen Sie die richtigen Befehlszeilenparameter aus. Das Tool bietet eine Hilfedatei, die Ihnen alle verfügbaren Optionen zeigt.
Das folgende Beispiel generiert Clientdateien für die beliebte Swagger PetStore -Beispiel -API.
OpenApiDelphiGen -i: " https://petstore.swagger.io/v2/swagger.json " -o: " C:PetStore " -n:PetStore -m:MultipleClientsFromFirstTagAndOperationId Der Parameter -i zeigt das OpenAPI -Dokument an, um importieren zu können. Der Parameter -o liefert den Ausgaberordner, in dem die Delphi -Dateien generiert werden sollen. Der Parameter -n ist der Name der API, die zum Präfixen von Einheiten und Klassennamen verwendet wird. Schließlich gibt der Parameter -m an, wie die Dienstklassen und Schnittstellen organisiert werden sollen.
Der Generator erstellt die folgenden Einheiten:

PetStoreClient ist die Haupteinheit mit den Servicegerichten und Schnittstellen. PetStoreDTOs enthält alle DTO -Klassen, und PetStoreJson hält Code für die Serialisierung/Deserialisierung von DTOs nach und von JSON.
Um den Client zu verwenden, fügen Sie einfach die generierten Einheiten Ihren Verwendungsklassen hinzu. Sofortieren Sie den Kunden und verwenden Sie seine Methoden. Beachten Sie, dass der generierte Code von den Einheiten im Ordner DIST abhängt, sodass Sie sie auch Ihrem Projekt hinzufügen müssen.
Wenn Sie den Kunden instanziiert, rufen Sie einfach eine Methode von einem Dienst an, um einen Endpunkt aufzurufen. Das folgende Beispiel erstellt ein neues Haustier auf dem Server, indem der POST /Pets -Endpunkt aufgerufen wird:
uses { ... } , PetStoreClient, PetStoreDtos;
procedure TPetStoreClientTests.CreateAndGetPet ;
const
PetId = 61341 ;
CategoryId = 61341 ;
TagId = 61341 ;
var
Pet: TPet;
Tag: TTag;
Client: IPetStoreClient;
begin
Client := TPetStoreClient.Create;
// Create the pet
Pet := TPet.Create;
try
Pet.Id := PetId;
Pet. Name := ' Josephine ' ;
Pet.Status := ' available ' ;
Pet.Category := TCategory.Create;
Pet.Category.Id := CategoryId;
Pet.Category. Name := ' Terrier Dogs ' ;
Pet.Tags := TTagList.Create;
Tag := TTag.Create;
Tag.Id := TagId;
Tag. Name := ' Terrier ' ;
Pet.Tags.Add(Tag);
Pet.PhotoUrls.Add( ' http://dummy.com/dog.png ' );
Client.Pet.AddPet(Pet);
finally
Pet.Free;
end ;Ein weiteres Beispiel, das ein Haustier abgerufen und dann löscht:
Client := TPetStoreClient.Create;
Pet := Client.Pet.GetPetById(PetId);
try
Check(Pet <> nil , Format( ' Pet %d not found ' , [PetId]));
CheckEquals(PetId, Pet.Id);
CheckEquals( ' Josephine ' , Pet. Name );
CheckEquals( ' available ' , Pet.Status);
finally
Pet.Free;
end ;
// Delete the newly created pet
Client.Pet.DeletePet( ' special-key ' , PetId);Sie müssen alle DTO -Klassen selbst erstellen und zerstören. Die Klassen und Listen der DTO -Klassen werden automatisch zerstört.
Sie können die Eigenschaft Config.AccessToken so festlegen, dass sie sich mit der API authentifizieren:
Client.Config.AccessToken := ' <access token> ' ; Es wird den HTTP -Header Authorization mit dem vom Bearer vorangestellten Token -Wert festgelegt.
Current Der generierte Code erfordert keine Abhängigkeit von Einheiten von Drittanbietern und arbeitet mit einer einfachen Delphi -Installation zusammen. Der Code verwendet derzeit THttpClient -Klasse von Unit System.Net.HttpClient , um die HTTP -Anforderungen durchzuführen, sodass der Client nur auf Delphi -Versionen kompiliert wird, die eine solche Klasse bereitstellen.
Alternativ können Sie den Client dazu zwingen, Indy -Komponenten zu verwenden, um HTTP -Anforderungen durchzuführen. Dafür können Sie den folgenden Code -Snippet verwenden.
uses { ... } , OpenApiRest, OpenApiIndy;
begin
// At the beginning of your application, set the DefaultRequestFactory
DefaultRequestFactory := TIndyRestRequestFactory.Create;
end ; Sie können den Moment abfangen, in dem ein neuer TIdHTTP -Client erstellt wird - falls Sie bestimmte Eigenschaften wie Proxy- oder IO -Handler einrichten möchten. Dafür können Sie einen solchen Code verwenden:
uses { ... } , OpenApiRest, OpenApiIndy, IdHTTP;
procedure TMainDataModule.IndyClientCreated (Client: TIdHTTP);
begin
// Set extra Client properties here
end ;
procedure TMainDataModule.DataModuleCreate (Sender: TObject);
var
Factory: TIndyRestRequestFactory;
begin
// At the beginning of your application, set the DefaultRequestFactory
Factory := TIndyRestRequestFactory.Create;
DefaultRequestFactory := Factory;
Factory.OnClientCreated := IndyClientCreated;
end ;Sie können das Testprojekt auch ohne Abhängigkeiten kompilieren und ausführen. Die Tests wurden unter Verwendung von Dunit erstellt, um eine maximale Kompatibilität mit mehreren Delphi -Versionen zu erhalten.
Das Generator -Tool selbst verwendet Bibliotheken von Drittanbietern. Sie brauchen sie nicht, um es zu verwenden. Sie können die ausführbare Datei einfach herunterladen und direkt verwenden. Falls Sie das Tool kompilieren und debuggen möchten, benötigen Sie die folgenden Bibliotheken:
Beachten Sie, dass TMS Biz eine kommerzielle Bibliothek ist. Sie können die Testversion für die Entwicklung verwenden (falls Sie zum Projekt beitragen möchten).
Dieses Projekt ist Fair-Code unter Apache 2.0 mit der Commons-Klausellizenz verteilt.