قم بإنشاء SDKs عميل Delphi لأي API REST محدد مع مواصفات OpenAPI.
يمكن لهذا المولد قراءة مستند OpenAPI (من الملف المحلي أو عنوان URL) من واجهة برمجة تطبيقات REST وإنشاء فئات Delphi التي يمكنك استخدامها لاستدعاء نقاط نهاية API REST هذه بطريقة ودية.
يقوم المولد بإنشاء فئات DTO (التي تمثل تعريفات JSON المستخدمة من قبل API) والواجهات مع الطرق التي يمكنك الاتصال بها (تمثل نقاط النهاية للاستدعاء).
قم بتنزيل الثنائيات وإلغاء الضغط في مجلد في القرص الخاص بك. المولد هو ملف exe سطر أوامر واحد يسمى OpenApiDelphiGen.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 هي اسم واجهة برمجة التطبيقات ، المستخدمة لبادئة أسماء الوحدة وأسماء الفصول. أخيرًا ، تشير المعلمة -m إلى كيفية تنظيم فئات الخدمة والواجهات.
سيقوم المولد بإنشاء الوحدات التالية:

PetStoreClient هي الوحدة الرئيسية مع فصول الخدمة والواجهات. يحتوي PetStoreDTOs على جميع فصول DTO ، ويحمل PetStoreJson رمزًا لتسلسل/Deserializing DTOs من وإلى JSON.
لاستخدام العميل ، ما عليك سوى إضافة الوحدات التي تم إنشاؤها إلى فئات الاستخدامات الخاصة بك. إنشاء مثيل للعميل واستخدم أساليبه. لاحظ أن الكود الذي تم إنشاؤه يعتمد على الوحدات المتوفرة في مجلد 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 للمصادقة مع واجهة برمجة التطبيقات:
Client.Config.AccessToken := ' <access token> ' ; سيقوم بتعيين رأس Authorization HTTP مع قيمة الرمز المميز الذي تم توجيهه بواسطة Bearer .
الحالي لا يتطلب الرمز الذي تم إنشاؤه أي اعتماد على وحدات الطرف الثالث ، ويعمل مع تثبيت Delphi عادي. يستخدم الرمز حاليًا فئة THttpClient من الوحدة System.Net.HttpClient لأداء طلبات HTTP ، وبالتالي فإن العميل سيقوم فقط بتجميع إصدارات Delphi التي توفر هذه الفئة.
بدلاً من ذلك ، يمكنك إجبار العميل على استخدام مكونات Indy لإجراء طلبات HTTP. لذلك ، يمكن استخدام مقتطف الكود التالي.
uses { ... } , OpenApiRest, OpenApiIndy;
begin
// At the beginning of your application, set the DefaultRequestFactory
DefaultRequestFactory := TIndyRestRequestFactory.Create;
end ; يمكنك اعتراض اللحظة التي يتم فيها إنشاء عميل TIdHTTP جديد - في حالة رغبتك في إعداد خصائص محددة مثل Proxy أو IO. لذلك يمكنك استخدام رمز مثل هذا:
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 ;يمكنك تجميع وتشغيل مشروع الاختبار أيضًا دون أي تبعيات. تم إنشاء الاختبارات باستخدام Dunit لتحقيق أقصى توافق مع العديد من إصدارات Delphi.
تستخدم أداة المولد نفسها مكتبات الطرف الثالث. لا تحتاجهم لاستخدامه ، يمكنك ببساطة تنزيل القابل للتنفيذ واستخدامه مباشرة. في حال كنت ترغب في تجميع الأداة وتصحيحها ، ستحتاج إلى المكتبات التالية:
لاحظ أن TMS Biz هي مكتبة تجارية. يمكنك استخدام الإصدار التجريبي للتطوير (في حال كنت ترغب في المساهمة في المشروع).
هذا المشروع يتم توزيع الرمز العادل بموجب Apache 2.0 مع ترخيص Commons Clause .