OpenAPI 사양으로 정의 된 REST API에 대해 Delphi Client 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과의 DTO를 직렬화/사제화하기위한 코드를 보유하고 있습니다.
클라이언트를 사용하려면 생성 된 장치를 사용 클래스에 추가하십시오. 클라이언트를 인스턴스화하고 그 방법을 사용하십시오. 생성 된 코드는 Dist 폴더에 제공된 단위에 따라 달라 지므로 프로젝트에 추가해야합니다.
클라이언트를 인스턴스화하면 서비스의 메소드를 호출하여 엔드 포인트를 호출하십시오. 다음 예제는 POST /Pets Endpoint를 호출하여 서버에서 새 PET를 생성합니다.
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 헤더를 설정합니다.
현재 생성 된 코드는 일반 델파이 설치와 협력하여 타사 단위에 대한 의존성이 필요하지 않습니다. 코드는 현재 unit System.Net.HttpClient 의 THttpClient 클래스를 사용하여 HTTP 요청을 수행하므로 클라이언트는 그러한 클래스를 제공하는 델파이 버전에서만 컴파일됩니다.
또는 클라이언트가 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 비즈는 상업용 라이브러리입니다. 개발에 시험판을 사용할 수 있습니다 (프로젝트에 기여하려는 경우).
이 프로젝트는 Commons 조항 라이센스와 함께 Apache 2.0 에 따라 분포되어 있습니다.