sgcOpenAPI REST 클라이언트를 손으로 쓰지 마세요. 스펙을 넣으면 Pascal이 나와요.

sgcOpenAPI에 OpenAPI 3.x 문서를 지정하세요. 파서가 문서를 읽고, 생성기가 네이티브 Object Pascal SDK를 만들어 내며, OpenAPI 서버 컴포넌트는 여러분의 엔드포인트를 살아 있는 스펙으로 다시 게시해요.

  • OpenAPI 3.0 및 3.1
  • JSON 및 YAML
  • Swagger 2.0 자동 변환
  • Delphi 7~RAD Studio 13
  • C++ Builder
  • 1,195+공식 스펙에서 생성한 사전 빌드 클라우드 SDK
  • 280+Amazon AWS 서비스
  • 650+Microsoft Azure 서비스
  • 250+Google Cloud 서비스
  • 15+Microsoft Graph SDK
실행 모습 보기

2분 만에 보는 sgcOpenAPI.

스펙을 넣으면 Pascal이 나오고, 양쪽 끝에서 서버를 띄울 수 있어요. 내레이션과 자막이 들어 있고, 재생 버튼을 누르기 전에는 아무것도 내려받지 않아요.

sgcOpenAPI 빠른 시작

스펙을 Delphi 코드로 바꾸고, Delphi 코드를 실행 중인 서버로 바꿔 보세요.

  1. 클라이언트 생성명령줄에 입력 스펙과 출력할 Pascal 파일을 지정하세요. 입력은 파일이든 URL이든, JSON이든 YAML이든 괜찮아요.
  2. 결과물평범한 Pascal 코드예요. 오퍼레이션마다 메서드 하나, 스키마마다 클래스 하나가 나와요. 대신 서버 골격이 필요하면 -s를 추가하세요.
  3. 스펙 우선 서버TsgcWSAPIServer_OpenAPI를 만들고 LoadFromFile로 불러온 뒤 OnRequest를 처리하고, 서버에 할당해서 Active로 전환하세요.
  4. 코드 우선 서버Delphi 클래스에 어트리뷰트를 붙이면 시작할 때 클래스에서 스펙이 생성돼요.
  5. 검증ValidateRequest와 ValidateRequestBody를 켜면 스펙과 맞지 않는 요청은 여러분의 코드에 도달하지 않아요.
사전 빌드 SDK 라이브러리

네 곳의 클라우드를 이미 Pascal로.

시작하려고 무언가를 생성할 필요가 없어요. 가장 큰 네 개의 클라우드 플랫폼이 sgcOpenAPI 안에 바로 쓸 수 있는 Pascal SDK로 들어 있고, 공식 사양에서 생성되어 최신 상태로 유지돼요.

Amazon AWS, 280개 이상의 서비스

S3, EC2, Lambda, DynamoDB, SQS, SNS, CloudFormation 등을 아우르는 REST 서비스 SDK예요. 유닛을 프로젝트에 넣고, 타입이 지정된 요청 및 응답 클래스로 서비스를 호출하면 돼요.

AWS SDK 보기 →

Microsoft Azure, 650개 이상의 서비스

라이브러리에서 가장 큰 묶음이에요. Azure VM, Blob Storage, Functions, Cosmos DB, Key Vault를 비롯한 Azure 컨트롤 플레인 전체가 각각 생성된 Pascal 클라이언트로 제공돼요.

Azure SDK 보기 →

Google Cloud, 250개 이상의 서비스

Compute Engine, Cloud Storage, BigQuery, Pub/Sub, Cloud Functions 등을 지원해요.

Google SDK 보기 →

Microsoft Graph, 15개 이상의 SDK

Graph API를 통해 Office 365, Microsoft Teams, OneDrive, Outlook, Active Directory를 사용해요.

Microsoft SDK 보기 →

그 밖의 모든 스펙

API가 OpenAPI 또는 Swagger 문서를 게시한다면, 생성기가 그것을 똑같은 방식의 타입 지정 Pascal 유닛으로 바꿔 줘요. 허용 목록 같은 것은 없어요.

생성기 기능 →

어떤 라이선스든 모든 기능이 포함돼요

Single, Team, Site 모두 파서, 코드 생성기, OpenAPI 서버 컴포넌트, 사전 빌드 SDK 라이브러리 전체를 포함해요. 따로 판매하는 항목은 없어요.

사전 빌드된 SDK 전체 →

공개 스펙에서 컴파일되는 Delphi 클라이언트까지, 단계별 가이드예요:

파이프라인

스펙을 넣으면 컴파일되는 코드가 나와요

다섯 단계, 전부 IDE 안에서 끝나요. Node.js도, Java 코드 생성기도, 배워야 할 템플릿 엔진도 없어요.

# one input, one output, and you have a unit
> sgcOpenAPI.exe -i "api.github.com.json" -o "github.pas" -a 2

File successfully created github.pas

# -a 2 wires up token auth   -u sets the base url
# -x drops operations        -p prunes the classes they used
# -s emits a server stub instead of a client
# exit 0 ok, 5 bad input, 6 bad output, 7 not convertible
uses
  github;  // the unit you just generated

procedure TForm1.btnReposClick(Sender: TObject);
var
  oResponse: TsgcOpenAPI_reposlistforauthenticateduser_Response;
  oRepo: TsgcOpenAPI_repository_Class;
begin
  GetOpenAPIClient.Authentication.Token.BearerToken := 'ghp_...';

  oResponse := GetOpenAPIClient.reposlistforauthenticateduser(
    'private', 'owner', 'all', 'full_name', '', 100, 1);
  try
    if oResponse.IsSuccessful then
      for oRepo in oResponse.Successful.Items do
        Memo1.Lines.Add(oRepo.Full_name)
    else
      Memo1.Lines.Add(IntToStr(oResponse.ResponseCode) + ' ' +
        oResponse.ResponseError);
  finally
    oResponse.Free;
  end;
end;
uses
  sgcHTTP_Server, sgcHTTP_OpenAPI_Server, sgcWebSocket_Server_API_OpenAPI;

procedure TForm1.btnStartClick(Sender: TObject);
begin
  FServer := TsgcHTTPServer.Create(Self);
  FServer.Port := 8080;

  FOpenAPI := TsgcWSAPIServer_OpenAPI.Create(Self);
  FOpenAPI.OpenAPIOptions.Endpoint.ServeSpec := True;
  FOpenAPI.OpenAPIOptions.Endpoint.ServeSwaggerUI := True;
  FOpenAPI.OpenAPIOptions.Validation.ValidateRequest := True;
  FOpenAPI.LoadFromFile('petstore.json');
  FOpenAPI.OnRequest := OnOpenAPIRequest;
  FOpenAPI.Server := FServer;

  FServer.Active := True;
end;

// one event, dispatched by operation id
procedure TForm1.OnOpenAPIRequest(Sender: TObject;
  const aOperationId: string;
  const aContext: TsgcOpenAPIServerContext;
  var Handled: Boolean);
begin
  Handled := True;
  if aOperationId = 'getPetById' then
    aContext.RespondJSON(200,
      FPets.Values[aContext.PathParamAsString('petId')])
  else
    Handled := False;
end;
  1. 스펙을 지정하세요 -i 에 로컬 파일이나 URL을 JSON 또는 YAML로 지정하세요. 둘 다 로컬에서 읽고, Swagger 2.0 문서도 로컬에서 OpenAPI 3으로 변환돼요.
  2. 파싱TsgcOpenAPI 가 문서를 읽어 Paths, Components, Security, Servers, Tags 와 Info에 담고, 처리하지 못한 내용은 모두 Warnings에 기록해요. 외부 $ref 포인터는 그 전에 TsgcOpenAPI_Bundle이 끌어와요.
  3. 생성TsgcOpenAPI_Parser_Client_Pascal 은 그 리더를 상속해서 Pascal 유닛 하나를 작성해요. 오퍼레이션마다 메서드 하나, 메서드마다 응답 클래스 하나, 스키마마다 클래스 하나가 나오고, 문서의 설명은 주석으로 들어가요.
  4. 컴파일생성된 유닛을 프로젝트에 추가하고 uses 절에 넣으세요. 라이브러리 경로에는 sgcOpenAPI Source 폴더 외에 아무것도 필요하지 않으며, Delphi 7부터 RAD Studio 13까지 지원해요. 타입이 지정된 응답은 XE7 이상이 필요해요.
  5. 호출GetOpenAPIClient를 호출하고 Authentication에 자격 증명을 설정한 다음 오퍼레이션을 호출하세요. 기본 URL은 문서의 servers 항목에서 이미 반영되어 있어요.

생성기는 리더를 상속해요. 그래서 TsgcOpenAPI 를 직접 생성해서 파싱된 모델을 순회하고 그 위에 자신만의 도구를 만들 수도 있어요. 파서 컴포넌트 →

서버 측

스펙을 소비만 하지 말고, 직접 게시하세요

TsgcWSAPIServer_OpenAPI 는 TsgcHTTPServer에 붙어서 들어오는 요청을 불러온 문서에 맞추어 라우팅하고, 핸들러가 실행되기 전에 요청을 검증하며, 같은 포트에서 문서와 Swagger UI를 제공해요.

스펙 우선: Delphi 유닛이 petstore.json을 TsgcWSAPIServer_OpenAPI에 불러오고, 라우트 테이블이 스펙에서 만들어져요.

이 코드가 해 주는 일

GET /pets/{petId} 는 OnRequest 핸들러에 aOperationId 가 getPetById로 설정된 채 도달해요. GET /openapi.json 은 불러온 문서를 반환하고 GET /docs 는 Swagger UI를 여는데, 둘 다 Endpoint.ServeSpec 와 Endpoint.ServeSwaggerUI로 켜져요. Endpoint.BasePath 는 이 둘을 접두사 아래로 옮겨요.

코드 우선: sgcServiceContract, sgcRoute, sgcHttpGet 어트리뷰트를 붙인 Delphi 클래스와, 시작할 때 그 클래스에서 생성된 OpenAPI 문서예요.

스펙 우선 또는 코드 우선

LoadFromFile 로 JSON 계약을 불러와 오퍼레이션 id로 분기하거나, Pascal 클래스에 sgcServiceContract, sgcHttpGet, sgcRoute 와 sgcFromBody 를 붙여 TsgcOpenAPICodeFirstScanner 가 문서를 만들게 하세요. 코드 우선은 Delphi XE7 이상이 필요해요. 두 데모 모두 다음 위치에 들어 있어요: Demos\30.Server\.

검증: 스펙과 맞지 않는 요청은 OnRequest 핸들러가 실행되기 전에 400 Bad Request로 응답해요.

핸들러 실행 전 검증

Validation.ValidateRequest, ValidateRequired 와 ValidateRequestBody 가 핸들러 실행 전에 들어오는 요청을 문서와 대조해요. OnValidationError 는 오퍼레이션 id와 실패 목록, 그리고 요청을 거부할지 결정하는 Continue 플래그를 넘겨줘요.

요청 컨텍스트: 경로, 쿼리, 본문 파라미터가 이미 파싱되어 있고, 핸들러에서 응답 코드, 콘텐츠 타입, 텍스트를 설정해요.

스펙에서 바로 연결되는 인증

문서의 securityScheme 항목이 OnValidateAPIKey, OnValidateBasic 와 OnValidateBearer를 구동해요. 자격 증명 조회만 작성하면, 컴포넌트가 요청을 파싱하고 조회가 거부했을 때 알맞은 상태로 응답해요.

  • API Key
  • HTTP Basic
  • Bearer
  • JWT
  • OAuth2
  • OpenID Connect
  • Swagger UI

이 서버는 WebSocket 엔드포인트와 정적 파일을 호스팅하는 바로 그 sgcWebSockets HTTP 서버 위에서 동작해요. 포트 하나, TLS 인증서 하나, 로그 스트림 하나면 돼요. OpenAPI 서버 컴포넌트 →

라이선스

제품은 하나, 라이선스는 셋.

Delphi와 C++ Builder용 통합 제품 하나예요. OpenAPI 3.x 파서, 네이티브 Pascal SDK 생성기, OpenAPI 서버 컴포넌트, 사전 빌드 클라우드 SDK 1,195개 이상이 들어 있어요. 전체 소스 코드와 로열티 없는 배포를 제공해요. 팀 규모에 맞게 고르세요.

Single

개발자 1명. 파서, 생성기, 서버 컴포넌트, 모든 사전 빌드 SDK.

€399 / 개발자 1명

Team

개발자 2명. Single과 같은 전체 제품이에요.

€649 / 개발자 2명

Site

개발자 무제한. Single과 같은 전체 제품이에요.

€1,099 / 개발자 무제한

sgcOpenAPI는 단독으로 라이선스가 부여돼요. 파서, 코드 생성기, 서버 컴포넌트, 사전 빌드 SDK 1,195개 이상 전체가 모든 라이선스에 포함돼요.

라이선스와 가격 비교
고객 후기

개발자들의 평가

전 세계의 Delphi, C++ Builder, Lazarus 및 .NET 개발자가 신뢰해요.

sgcWebSockets 라이브러리는 정말 유용하고 설정하기 쉬워요. 앞으로도 좋은 작업 부탁드려요!
Simone Moretti Delphi 개발자
sgcWebSockets는 정말 훌륭하고 지원도 최고예요!
Christian Meyer 창립자 및 CTO
도움과 지원에 정말 감사드려요. 컴포넌트가 너무 마음에 들어요.
Mark Steinfeld CTO

오늘 첫 Pascal SDK를 생성해 보세요.

파서, 코드 생성기, OpenAPI 서버 컴포넌트, 그리고 1,195개 이상의 사전 빌드 클라우드 SDK를 라이선스 하나로 사용해요. 전체 소스, 로열티 없는 배포, Delphi 7부터 RAD Studio 13까지 지원해요.

eSeGeCe의 다른 제품

eSeGeCe의 다른 제품

sgcOpenAPI는 Delphi, C++ Builder, .NET용 eSeGeCe 컴포넌트 라이브러리 중 하나예요. 모두 같은 규칙을 따르고, 전체 소스 코드가 포함되며, 로열티 없이 배포할 수 있어요.

팩, 애드온 등

블로그 최신 소식

모든 글 보기 →

지금 eSeGeCe의 sgcOpenAPI 관점을 보고 있어요.

다른 관점 보기 →
30일 환불 보장만족하지 않으세요? 구매 후 30일 이내에 전액 환불을 요청하세요. 환불 정책 보기