Hasilkan SDK Klien Delphi untuk API REST yang ditentukan dengan spesifikasi OpenAPI.
Generator ini dapat membaca dokumen OpenAPI (dari file lokal atau URL) dari REST API dan menghasilkan kelas Delphi yang dapat Anda gunakan untuk memohon titik akhir API REST dengan cara yang ramah.
Generator membuat kelas DTO (mewakili definisi JSON yang digunakan oleh API) dan antarmuka dengan metode yang dapat Anda panggil (mewakili titik akhir untuk memohon).
Unduh binari dan dekompresi di folder di disk Anda. Generator adalah file exe baris perintah tunggal bernama OpenApiDelphiGen.exe . Menjalankannya melewati parameter baris perintah yang tepat. Alat ini menyediakan file bantuan yang menunjukkan kepada Anda semua opsi yang tersedia.
Contoh berikut menghasilkan file klien untuk Contoh Petstore Popular Popular API.
OpenApiDelphiGen -i: " https://petstore.swagger.io/v2/swagger.json " -o: " C:PetStore " -n:PetStore -m:MultipleClientsFromFirstTagAndOperationId Parameter -i menunjukkan dokumen OpenAPI untuk diimpor. Parameter -o menyediakan folder output di mana file Delphi harus dihasilkan. Parameter -n adalah nama API, yang digunakan untuk awalan unit dan nama kelas. Akhirnya, -m Parameter menunjukkan bagaimana kelas layanan dan antarmuka harus diatur.
Generator akan membuat unit berikut:

PetStoreClient adalah unit utama dengan kelas layanan dan antarmuka. PetStoreDTOs berisi semua kelas DTO, dan PetStoreJson memegang kode untuk serialisasi/deserializing DTO ke dan dari JSON.
Untuk menggunakan klien, cukup tambahkan unit yang dihasilkan ke kelas penggunaan Anda. Instantiate klien dan gunakan metodenya. Perhatikan bahwa kode yang dihasilkan tergantung pada unit yang disediakan di folder Dist, jadi Anda juga harus menambahkannya ke proyek Anda.
Setelah Anda instantiate klien, cukup hubungi metode dari layanan untuk memohon titik akhir. Contoh berikut akan membuat hewan peliharaan baru di server dengan memohon titik akhir 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 ;Contoh lain yang akan mengambil dan kemudian menghapus hewan peliharaan:
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);Anda harus membuat dan menghancurkan semua kelas DTO sendiri. Kelas dan daftar yang dimiliki oleh kelas DTO dihancurkan secara otomatis.
Anda dapat mengatur properti Config.AccessToken untuk mengotentikasi dengan API:
Client.Config.AccessToken := ' <access token> ' ; Ini akan mengatur header HTTP Authorization dengan nilai token diawali oleh Bearer .
Saat ini kode yang dihasilkan tidak memerlukan ketergantungan pada unit pihak ke -3, bekerja dengan instalasi Delphi biasa. Kode saat ini menggunakan kelas THttpClient dari unit System.Net.HttpClient untuk melakukan permintaan HTTP, sehingga klien hanya akan mengkompilasi versi Delphi yang menyediakan kelas tersebut.
Atau, Anda dapat memaksa klien untuk menggunakan komponen indy untuk melakukan permintaan HTTP. Untuk itu, dapat menggunakan cuplikan kode berikut.
uses { ... } , OpenApiRest, OpenApiIndy;
begin
// At the beginning of your application, set the DefaultRequestFactory
DefaultRequestFactory := TIndyRestRequestFactory.Create;
end ; Anda dapat mencegat momen di mana klien TIdHTTP baru dibuat - jika Anda ingin mengatur properti spesifik seperti proxy atau penangan IO. Untuk itu Anda dapat menggunakan kode seperti ini:
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 ;Anda dapat mengkompilasi dan menjalankan proyek uji juga tanpa dependensi. Tes dibuat menggunakan dunit untuk kompatibilitas maksimum dengan beberapa versi Delphi.
Alat generator itu sendiri menggunakan perpustakaan pihak ke -3. Anda tidak perlu mereka menggunakannya, Anda dapat mengunduh yang dapat dieksekusi dan menggunakannya secara langsung. Jika Anda ingin menyusun dan men -debug alat, Anda akan memerlukan perpustakaan berikut:
Perhatikan bahwa TMS Biz adalah perpustakaan komersial. Anda dapat menggunakan versi uji coba untuk pengembangan (jika Anda ingin berkontribusi dengan proyek).
Proyek ini didistribusikan dengan kode wajar di bawah Apache 2.0 dengan lisensi klausa Commons .