Amazon AWS, mais de 280 serviços
SDKs de serviços REST que cobrem S3, EC2, Lambda, DynamoDB, SQS, SNS, CloudFormation e mais. Adicione a unit ao projeto e chame o serviço com classes tipadas de requisição e resposta.
Ver SDKs da AWS →Aponte o sgcOpenAPI para um documento OpenAPI 3.x. O parser o lê, o gerador emite um SDK nativo em Object Pascal e o componente de servidor OpenAPI publica seus próprios endpoints de volta como uma especificação ativa.
Uma especificação entra, Pascal sai, e um servidor em qualquer uma das pontas. Narrado e legendado. Nada é baixado até você pressionar play.
Transforme uma especificação em código Delphi e transforme código Delphi em um servidor em execução.
Você não precisa gerar nada para começar. As quatro maiores plataformas de nuvem acompanham o sgcOpenAPI como SDKs Pascal prontos para uso, gerados a partir das especificações oficiais e mantidos atualizados.
SDKs de serviços REST que cobrem S3, EC2, Lambda, DynamoDB, SQS, SNS, CloudFormation e mais. Adicione a unit ao projeto e chame o serviço com classes tipadas de requisição e resposta.
Ver SDKs da AWS →O maior conjunto da biblioteca. VMs do Azure, Blob Storage, Functions, Cosmos DB, Key Vault e o restante do plano de controle do Azure, cada um um cliente Pascal gerado.
Ver SDKs do Azure →Compute Engine, Cloud Storage, BigQuery, Pub/Sub, Cloud Functions e mais.
Ver SDKs do Google →Office 365, Microsoft Teams, OneDrive, Outlook e Active Directory, por meio da API Graph.
Ver SDKs da Microsoft →Se a API publica um documento OpenAPI ou Swagger, o gerador o transforma no mesmo tipo de unit Pascal tipada. Não há lista de permissões.
Recursos do gerador →Single, Team e Site incluem o parser, o gerador de código, o componente de servidor OpenAPI e toda a biblioteca de SDKs prontos. Nada é vendido separadamente.
Todos os SDKs prontos →Guias práticos, de uma especificação pública a um cliente Delphi que compila
Cinco passos, todos dentro da IDE. Sem Node.js, sem gerador de código em Java, sem mecanismo de templates para aprender.
# 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;
-i para um arquivo local ou uma URL, em JSON ou YAML. Ambos são lidos localmente, e um documento Swagger 2.0 também é convertido para OpenAPI 3 localmente.TsgcOpenAPI lê o documento em Paths, Components, Security, Servers, Tags e Info, e registra tudo o que não conseguiu atender em Warnings. Ponteiros $ref externos são incorporados antes por TsgcOpenAPI_Bundle.TsgcOpenAPI_Parser_Client_Pascal descende desse leitor e escreve uma unit Pascal: um método por operação, uma classe de resposta por método e uma classe para cada schema, com as descrições do documento como comentários.Source do sgcOpenAPI, do Delphi 7 ao RAD Studio 13. Respostas tipadas exigem XE7 ou posterior.GetOpenAPIClient, defina as credenciais em Authentication, e chame a operação. A URL base já vem embutida a partir da entrada servers do documento.O gerador descende do leitor, então você também pode criar o TsgcOpenAPI por conta própria, percorrer o modelo analisado e construir sua própria ferramenta sobre ele. O componente parser →
TsgcWSAPIServer_OpenAPI se conecta a um TsgcHTTPServer, roteia as requisições recebidas com base no documento carregado, valida-as antes de executar seu handler e serve o documento e uma Swagger UI pela mesma porta.

GET /pets/{petId} chega ao seu handler OnRequest com aOperationId definido como getPetById. GET /openapi.json retorna o documento carregado e GET /docs abre a Swagger UI, ambos ativados por Endpoint.ServeSpec e Endpoint.ServeSwaggerUI. Endpoint.BasePath move o par para baixo de um prefixo.

Carregue um contrato JSON com LoadFromFile e despache pelo id da operação, ou anote uma classe Pascal com sgcServiceContract, sgcHttpGet, sgcRoute e sgcFromBody e deixe o TsgcOpenAPICodeFirstScanner construir o documento. O Code-First exige Delphi XE7 ou posterior. As duas demos estão em Demos\30.Server\.

Validation.ValidateRequest, ValidateRequired e ValidateRequestBody verificam a requisição recebida com base no documento antes de o seu handler executar. OnValidationError entrega o id da operação e a lista de falhas, além de um flag Continue que decide se a requisição é rejeitada.

As entradas securityScheme do documento acionam OnValidateAPIKey, OnValidateBasic e OnValidateBearer. Você escreve a consulta das credenciais, o componente analisa a requisição e responde com o status correto quando a consulta recusa.
O servidor roda no mesmo servidor HTTP do sgcWebSockets que hospeda seus endpoints WebSocket e arquivos estáticos. Uma porta, um certificado TLS, um fluxo de log. O componente de servidor OpenAPI →
Um produto completo para Delphi e C++ Builder: um parser OpenAPI 3.x, um gerador nativo de SDK Pascal, um componente de servidor OpenAPI e mais de 1.195 SDKs de nuvem prontos. Código-fonte completo, distribuição sem royalties. Escolha pelo tamanho da equipe.
Um desenvolvedor. Parser, gerador, componente de servidor e todos os SDKs prontos.
Dois desenvolvedores. O mesmo produto completo do Single.
Desenvolvedores ilimitados. O mesmo produto completo do Single.
O sgcOpenAPI é licenciado separadamente. Parser, gerador de código, componente de servidor e todos os mais de 1.195 SDKs prontos estão incluídos em todos os níveis.
Compare níveis e preçosConfiado por desenvolvedores Delphi, C++ Builder, Lazarus e .NET ao redor do mundo.
A biblioteca sgcWebSockets de vocês é muito útil e fácil de configurar. Continuem com o ótimo trabalho!
O sgcWebSockets é incrível e o suporte de vocês é o melhor!
Muito obrigado pela ajuda e pelo suporte, eu adoro os componentes de vocês.
Parser, gerador de código, componente de servidor OpenAPI e todos os mais de 1.195 SDKs de nuvem prontos, em uma única licença. Código-fonte completo, distribuição sem royalties, do Delphi 7 ao RAD Studio 13.
Primeiros PassosRecursosParserServidorSDKs prontosComparação
O sgcOpenAPI é uma das bibliotecas de componentes da eSeGeCe para Delphi, C++ Builder e .NET. Elas compartilham convenções, acompanham o código-fonte completo e são distribuídas sem royalties.
WebSocket, HTTP/2, MQTT, AMQP, WebRTC, IA e mais de 30 integrações de API. O servidor HTTP em que o componente de servidor OpenAPI roda.
Componentes de servidor REST, servidor OpenAPI e cliente OpenAPI para Delphi e C++ Builder. Publique APIs REST a partir de um contrato OpenAPI 3.x ou consuma qualquer API descrita em OpenAPI. Independente, com o runtime do sgcWebSockets Core incluído.
Componentes HTML e de interface no servidor com Bootstrap 5 e htmx. Construa a interface de administração ou o painel para os clientes REST que você gera, sem um front end JavaScript.
Transporte QUIC puro e cliente e servidor HTTP/3, com WebTransport. Exponha os clientes REST que você gera sobre um transporte QUIC/HTTP-3 para menor latência de conexão.
XAdES, PAdES, CAdES e ASiC para documentos; Authenticode, ClickOnce, NuGet e VSIX para código. Assine os corpos de requisição e resposta que sua API troca.
Crie, edite, visualize, assine, censure e valide arquivos PDF em Object Pascal puro, sem DLL para implantar. Licenciado separadamente.
Componentes Indy TCP/IP atualizados com TLS moderno, IPv6 e HTTP/2 para Delphi 7 ao 13. A camada de transporte sob os clientes gerados.
Pacotes, complementos e mais