Générez Delphi Client SDK pour toute API REST définie avec la spécification OpenAPI.
Ce générateur peut lire un document OpenAPI (à partir du fichier local ou de l'URL) d'une API REST et générer des classes Delphi que vous pouvez utiliser pour invoquer ces points de terminaison API REST d'une manière amicale.
Le générateur crée les classes DTO (représentant les définitions JSON utilisées par l'API) et les interfaces avec les méthodes que vous pouvez appeler (représentant les points de terminaison à invoquer).
Téléchargez les binaires et décompressez dans un dossier de votre disque. Le générateur est un fichier EXE de ligne de commande unique nommé OpenApiDelphiGen.exe . Exécutez-le en passant les paramètres de ligne de commande appropriés. L'outil fournit un fichier d'aide vous indiquant toutes les options disponibles.
L'exemple suivant génère des fichiers clients pour l'exemple populaire de Swagger Petstore Exemple.
OpenApiDelphiGen -i: " https://petstore.swagger.io/v2/swagger.json " -o: " C:PetStore " -n:PetStore -m:MultipleClientsFromFirstTagAndOperationId Le paramètre -i indique le document OpenAPI à importer. Le paramètre -o fournit le dossier de sortie où les fichiers Delphi doivent être générés. Le paramètre -n est le nom de l'API, utilisé pour préfixer les noms d'unité et de classe. Enfin, le paramètre -m indique comment les classes de services et les interfaces doivent être organisées.
Le générateur créera les unités suivantes:

PetStoreClient est l'unité principale avec les classes de service et les interfaces. PetStoreDTOs contient toutes les classes DTO et PetStoreJson détient le code pour sérialiser / désérialiser les DTO vers et depuis JSON.
Pour utiliser le client, ajoutez simplement les unités générées à vos classes d'utilisation. Instanciez le client et utilisez ses méthodes. Notez que le code généré dépend des unités fournies dans le dossier DIST, vous devez donc également les ajouter à votre projet.
Une fois que vous avez instancié le client, appelez simplement une méthode d'un service pour invoquer un point de terminaison. L'exemple suivant créera un nouvel animal de compagnie dans le serveur en invoquant le point de terminaison POST /Pets :
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 ;Un autre exemple qui récupérera puis supprimera un animal de compagnie:
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);Vous devez créer et détruire toutes les classes DTO vous-même. Les classes et les listes appartenant aux classes DTO sont détruites automatiquement.
Vous pouvez définir la propriété Config.AccessToken pour s'authentifier avec l'API:
Client.Config.AccessToken := ' <access token> ' ; Il définira l'en-tête HTTP Authorization avec la valeur de jeton préfixée par Bearer .
Actuel Le code généré ne nécessite aucune dépendance sur les unités tierces, en travaillant avec une installation de Delphi simple. Le code utilise actuellement la classe THttpClient de Unit System.Net.HttpClient pour effectuer les demandes HTTP, de sorte que le client ne se compilera que sur les versions Delphi qui fournissent une telle classe.
Alternativement, vous pouvez forcer le client à utiliser les composants Indy pour effectuer des demandes HTTP. Pour cela, peut utiliser l'extrait de code suivant.
uses { ... } , OpenApiRest, OpenApiIndy;
begin
// At the beginning of your application, set the DefaultRequestFactory
DefaultRequestFactory := TIndyRestRequestFactory.Create;
end ; Vous pouvez intercepter le moment où un nouveau client TIdHTTP est créé - au cas où vous souhaitez configurer des propriétés spécifiques comme les gestionnaires de proxy ou d'IO. Pour cela, vous pouvez utiliser un code comme celui-ci:
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 ;Vous pouvez également compiler et exécuter le projet de test sans aucune dépendance. Les tests ont été créés à l'aide de DUNIT pour une compatibilité maximale avec plusieurs versions Delphi.
L'outil de générateur lui-même utilise des bibliothèques tierces. Vous n'en avez pas besoin pour l'utiliser, vous pouvez simplement télécharger l'exécutable et l'utiliser directement. Dans le cas où vous souhaitez compiler et déboguer l'outil, vous aurez besoin des bibliothèques suivantes:
Notez que TMS Biz est une bibliothèque commerciale. Vous pouvez utiliser la version d'essai pour le développement (au cas où vous souhaitez contribuer au projet).
Ce projet est réparti par le code équitable sous Apache 2.0 avec la licence de clause Commons .