สร้าง SDKS Client Delphi สำหรับ REST API ใด ๆ ที่กำหนดด้วยข้อกำหนด OpenAPI
เครื่องกำเนิดไฟฟ้านี้สามารถอ่านเอกสาร OpenAPI (จากไฟล์ท้องถิ่นหรือ URL) ของ REST API และสร้างคลาส Delphi ที่คุณสามารถใช้ในการเรียกใช้จุดสิ้นสุด REST API ดังกล่าวอย่างเป็นมิตร
เครื่องกำเนิดไฟฟ้าสร้างคลาส DTO (แสดงถึงคำจำกัดความ JSON ที่ใช้โดย API) และอินเทอร์เฟซที่มีวิธีการที่คุณสามารถเรียกได้ (แสดงถึงจุดสิ้นสุดที่จะเรียกใช้)
ดาวน์โหลด Binaries และ Decompress ในโฟลเดอร์ในดิสก์ของคุณ เครื่องกำเนิดไฟฟ้าเป็นไฟล์ EXE บรรทัดคำสั่งเดียวชื่อ OpenApiDelphiGen.exe ดำเนินการผ่านพารามิเตอร์บรรทัดคำสั่งที่เหมาะสม เครื่องมือมีไฟล์ช่วยเหลือที่แสดงตัวเลือกที่มีอยู่ทั้งหมด
ตัวอย่างต่อไปนี้สร้างไฟล์ไคลเอนต์สำหรับตัวอย่าง PetStore 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 ถือรหัสสำหรับการทำให้เป็นอนุกรม/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 เพื่อตรวจสอบสิทธิ์ด้วย API:
Client.Config.AccessToken := ' <access token> ' ; มันจะตั้งค่าส่วนหัว HTTP Authorization ด้วยค่าโทเค็นนำหน้าโดย Bearer
ปัจจุบันรหัสที่สร้างขึ้นไม่จำเป็นต้องมีการพึ่งพาหน่วยบุคคลที่สามทำงานกับการติดตั้ง Delphi ธรรมดา ขณะนี้รหัสกำลังใช้คลาส THttpClient จาก unit 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 ใหม่ถูกสร้างขึ้น - ในกรณีที่คุณต้องการตั้งค่าคุณสมบัติเฉพาะเช่นพร็อกซีหรือตัวจัดการ 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