OpenAPI仕様で定義されたREST APIのDelphiクライアントSDKを生成します。
このジェネレーターは、REST APIのOpenAPIドキュメント(ローカルファイルまたはURLから)を読み取り、そのようなREST APIエンドポイントをフレンドリーな方法で呼び出すために使用できるDelphiクラスを生成できます。
ジェネレーターは、DTOクラス(APIで使用されるJSON定義を表す)と、呼び出すことができるメソッド(呼び出すエンドポイントを表す)を使用して作成します。
バイナリをダウンロードして、ディスクのフォルダーで減圧します。ジェネレーターは、 OpenApiDelphiGen.exeという名前の単一のコマンドラインexeファイルです。適切なコマンドラインパラメーターを渡すと実行します。このツールは、利用可能なすべてのオプションを示すヘルプファイルを提供します。
次の例では、人気のあるSwagger Petstoreの例APIのクライアントファイルを生成します。
OpenApiDelphiGen -i: " https://petstore.swagger.io/v2/swagger.json " -o: " C:PetStore " -n:PetStore -m:MultipleClientsFromFirstTagAndOperationId -iパラメーターは、インポートするOpenAPIドキュメントを示します。 -oパラメーターは、delphiファイルを生成する出力フォルダーを提供します。 -nパラメーターはAPIの名前であり、ユニット名とクラス名のプレフィックスに使用されます。最後に、 -mパラメーターは、サービスクラスとインターフェイスの編成方法を示します。
ジェネレーターは次のユニットを作成します。

PetStoreClientは、サービスクラスとインターフェイスを備えたメインユニットです。 PetStoreDTOsにはすべてのDTOクラスが含まれており、 PetStoreJson JSONとの&formとのDTOをシリアル化/脱必要なコードを保持しています。
クライアントを使用するには、使用したクラスに生成されたユニットを追加するだけです。クライアントをインスタンス化し、その方法を使用します。生成されたコードは、DISTフォルダーに提供されるユニットに依存するため、プロジェクトに追加する必要があることに注意してください。
クライアントをインスタンス化したら、サービスからメソッドを呼び出してエンドポイントを呼び出します。次の例では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 ;ペットを取得して削除する別の例:
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);すべてのDTOクラスを自分で作成および破壊する必要があります。 DTOクラスが所有するクラスとリストは、自動的に破壊されます。
Config.AccessTokenプロパティを設定して、APIで認証できます。
Client.Config.AccessToken := ' <access token> ' ; Bearerが付けたトークン値を使用して、 Authorization HTTPヘッダーを設定します。
現在、生成されたコードは、平易なDelphiインストールを使用して、サードパーティユニットへの依存関係を必要としません。このコードは現在、 System.Net.HttpClientのTHttpClientクラスを使用してHTTPリクエストを実行しているため、クライアントはそのようなクラスを提供するDelphiバージョンでのみコンパイルします。
または、クライアントにIndyコンポーネントを使用してHTTP要求を実行させることもできます。そのために、次のコードスニペットを使用できます。
uses { ... } , OpenApiRest, OpenApiIndy;
begin
// At the beginning of your application, set the DefaultRequestFactory
DefaultRequestFactory := TIndyRestRequestFactory.Create;
end ;プロキシやIOハンドラーなどの特定のプロパティをセットアップする場合に備えて、新しいTIdHTTPクライアントが作成される瞬間をインターセプトできます。そのためには、次のようなコードを使用できます。
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 ;依存関係なくテストプロジェクトをコンパイルして実行できます。このテストは、いくつかのDelphiバージョンとの最大の互換性のためにDunitを使用して作成されました。
ジェネレーターツール自体は、サードパーティライブラリを使用します。使用する必要はありません。実行可能ファイルをダウンロードして直接使用できます。ツールをコンパイルしてデバッグする場合は、次のライブラリが必要になります。
TMS Bizは商業図書館であることに注意してください。開発にはトライアルバージョンを使用できます(プロジェクトに貢献する場合)。
このプロジェクトは、Commons Clauseライセンスを使用してApache 2.0に基づいてフェアコードが配布されています。