sgcREST APIs REST, nativos no Delphi. OpenAPI embutido.

Duas tarefas, sete classes. TsgcHTTPRESTServer publica uma API REST com CORS, /metrics e /health, multitenancy e um repositório de usuários. Um motor OpenAPI serve uma API direto de um contrato OpenAPI 3.x, ou gera o contrato a partir da sua classe Delphi, e o TsgcOpenAPI_Client consome qualquer API descrita em OpenAPI. O runtime Core do sgcWebSockets está incluído.

Publique o seu primeiro endpoint com poucas linhas →
  • Delphi 7 a 13
  • C++ Builder
  • OpenAPI 3.x
  • CORS
  • /metrics e /health
  • Multitenancy
  • Código-fonte completo
  • 4Componentes da paleta: servidor REST, estatísticas, tenancy e usuários
  • 7Classes no total, família do servidor REST, motor OpenAPI e cliente
  • 4Esquemas de autenticação do cliente: Basic, bearer token, OAuth2 e JWT
  • 2Endpoints embutidos, /metrics e /health, ambos opcionais
  • 100%Código-fonte incluído em toda licença
Veja funcionando

Veja o sgcREST em dois minutos.

Um passo a passo narrado e legendado do servidor REST: o servidor HTTP que você já conhece, mais as quatro coisas de que uma API REST sempre acaba precisando. Nada é baixado até você apertar o play.

Guia rápido do sgcREST

Crie um servidor de API REST em Delphi com CORS, estatísticas ao vivo, tenancy e usuários.

  1. Tudo herdadoO TsgcHTTPRESTServer descende do TsgcHTTPServer: Port, TLS, Authentication, sessões, compressão, o pool de threads, o firewall e o limitador de taxa.
  2. Tudo opcionalO CORS vem desligado por padrão, e ServerStats e Tenancy ficam sem atribuição. Nada se liga sozinho depois de uma atualização.
  3. CORSListe as origens, os métodos e os cabeçalhos que você permite, e o servidor responde ao preflight OPTIONS por você.
  4. Métricas e saúdeAtribua um TsgcHTTPServerStats e ganhe /metrics e /health, ambos atrás do portão de autenticação do servidor.
  5. MultitenancyCada requisição é mapeada para um tenant a partir do host, do caminho, de um cabeçalho ou de uma claim JWT. Os handlers só leem Tenant.
  6. Um repositório de usuários prontoContas, hashes de senha com salt e papéis. O portão Basic embutido resolve cada credencial com ele.
O que vem na caixa

Quatro componentes de paleta, três classes só de código.

O servidor REST e os seus três companheiros são componentes não visuais na página SGC REST da paleta. O motor do servidor OpenAPI e o cliente OpenAPI ficam em sgcHTTP_OpenAPI_* units: crie uma, configure e chame os seus métodos diretamente.

Servidor REST · um servidor, três companheiros

Ver →
  • TsgcHTTPRESTServer
  • TsgcHTTPServerStats
  • TsgcHTTPServer_Tenancy
  • TsgcHTTPServer_Users
  • CORSOptions
  • ServerStats
  • Tenancy
  • Tenant

TsgcHTTPRESTServer estende o TsgcHTTPServer padrão com tratamento de CORS por meio de CORSOptions, e duas propriedades para companheiros opcionais. TsgcHTTPServerStats conta cada requisição por classe de status, acompanha a latência mínima, média e máxima e serve, no formato Prometheus, o endpoint /metrics e, em JSON, o endpoint /health , com o método GetEndpointStats para um detalhamento por rota. TsgcHTTPServer_Tenancy resolve o tenant de quem chama a partir do nome do host, de um segmento do caminho, de um cabeçalho da requisição ou de uma claim JWT, e o Tenant lê o resultado da requisição que está sendo atendida. TsgcHTTPServer_Users é um repositório independente de contas, hashes de senha com salt e papéis.

Servidor OpenAPI · spec-first ou code-first

Ver →
  • TsgcOpenAPIRouteTable
  • TsgcOpenAPIServerContext
  • TsgcOpenAPIServerHandler
  • TsgcOpenAPIJSONValidator
  • TsgcOpenAPICodeFirstScanner
  • RespondJSON

Carregue um documento OpenAPI 3.0 ou 3.1 e a tabela de rotas é montada a partir da seção paths. Uma requisição correspondente chega como um TsgcOpenAPIServerContext, com parâmetros de caminho e de consulta tipados, auxiliares de corpo e RespondJSON/RespondError, e o validador confere corpos, parâmetros de consulta e de caminho com os JSON Schemas que a especificação declara. O code-first inverte a fonte da verdade: anote uma classe Delphi simples e o scanner gera a especificação.

Cliente OpenAPI · qualquer API descrita

Ver →
  • TsgcOpenAPI_Client
  • SetBaseURL
  • HTTP_REQUEST
  • HTTP_REQUEST_Async
  • Authentication
  • OnBeforeRequest
  • OnUpload
  • OnDownload

Um cliente de runtime genérico para qualquer endpoint que um documento OpenAPI descreva, e a classe base por trás dos SDKs gerados. Authentication cobre autenticação Basic e bearer tokens, além de OAuth2 e JWT genéricos, HTTP_REQUEST leva a chamada, e OnBeforeRequest, OnUpload e OnDownload acompanham a execução.

Veja todos os componentes e propriedades

Como funciona

Um servidor, companheiros combináveis.

As sete classes se dividem com clareza por função. O servidor REST carrega o tráfego HTTP, três companheiros acrescentam o que uma API de produção precisa, e o motor OpenAPI transforma uma especificação, escrita ou gerada, em uma tabela de rotas funcional.

Um TsgcHTTPServer com extras

TsgcHTTPRESTServer herda as bindings, o TLS e o tratamento de HTTP/2 do servidor HTTP simples que acompanha todas as edições do sgcWebSockets, e acrescenta CORS e as propriedades dos companheiros, de modo que uma API REST ganha métricas, verificações de saúde e multitenancy sem outro framework.

Companheiros, não embutidos

Estatísticas, tenancy e usuários são componentes separados. Anexe os que uma API precisa e deixe os outros de fora. Um companheiro anexado mas não configurado não custa nada ao servidor para ser verificado.

Spec-first e code-first, uma única tabela de rotas

Seja o documento OpenAPI vindo de um arquivo que você carregou ou de TsgcOpenAPICodeFirstScanner.GenerateSpec examinando uma classe com atributos, a mesma tabela de rotas e o mesmo contexto de requisição atendem os dois casos.

Todos os callbacks de que a especificação precisa

Os eventos de validação e autenticação recebem o TsgcOpenAPIServerContext, com PathParams, QueryParams e RespondJSON, e OnException captura os erros dos handlers antes que cheguem à rede, de modo que nada sobre o motivo de uma chamada ter sido aceita ou rejeitada fica escondido de você.

Seis plataformas, sem complemento

As sete classes rodam na biblioteca Indy padrão que acompanha o RAD Studio: Windows Win32 e Win64, Linux64, macOS, iOS e Android. Do Delphi 7 ao RAD Studio 13 e no C++ Builder.

O runtime Core está na caixa

O runtime Core do sgcWebSockets fornece a pilha HTTP/TLS sobre a qual rodam o servidor REST e todas as classes OpenAPI, e a camada JSON que serializa cada requisição e resposta. O código-fonte completo faz parte do pacote, como todo o resto.

Início rápido

Publique um endpoint, publique um contrato ou chame um.

O servidor REST entrega a requisição diretamente a você. O servidor OpenAPI entrega uma operação já validada e correspondida. O cliente OpenAPI chama os endpoints de outra pessoa. Os três compilam igual no Delphi 7 a 13 e no C++ Builder.

uses
  sgcHTTP_REST_Server, sgcHTTP_REST_Server_Stats;
var
  RESTServer: TsgcHTTPRESTServer;
  Stats: TsgcHTTPServerStats;
begin
  // REST server: CORS, health/metrics and tenancy in one component
  RESTServer := TsgcHTTPRESTServer.Create(nil);
  Stats := TsgcHTTPServerStats.Create(nil);
  Stats.Endpoints.Health.Enabled := True;

  RESTServer.Port := 8080;
  RESTServer.CORSOptions.Enabled := True;
  RESTServer.CORSOptions.AllowOrigins := 'https://app.example.com';
  RESTServer.ServerStats := Stats;
  RESTServer.OnCommandGet := RESTServerCommandGet;
  RESTServer.Active := True;
end;

procedure TForm1.RESTServerCommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
  AResponseInfo.ContentText := '{"status":"ok"}';
end;
uses
  sgcWebSocket_Server_API_OpenAPI, sgcHTTP_Server;
var
  OpenAPIServer: TsgcWSAPIServer_OpenAPI;
begin
  // OpenAPI server: load the contract, dispatch by operation id
  OpenAPIServer := TsgcWSAPIServer_OpenAPI.Create(nil);
  OpenAPIServer.Server := sgcHTTPServer1;
  OpenAPIServer.LoadFromFile('petstore.json');
  OpenAPIServer.OnRequest := OpenAPIServerRequest;

  sgcHTTPServer1.Port := 8080;
  sgcHTTPServer1.Active := True;
end;

procedure TForm1.OpenAPIServerRequest(Sender: TObject;
  const aOperationId: string; const aContext: TsgcOpenAPIServerContext;
  var Handled: Boolean);
begin
  if aOperationId = 'getPetById' then
  begin
    aContext.RespondJSON(200,
      '{"id":"' + aContext.PathParamAsString('petId') + '","name":"Rex"}');
    Handled := True;
  end;
end;
uses
  sgcHTTP_OpenAPI_Client;
var
  APIClient: TsgcOpenAPI_Client;
  Request: TsgcOpenAPIRequest;
  Response: TsgcOpenAPIResponse;
begin
  // OpenAPI client: call any OpenAPI-described API with basic auth
  APIClient := TsgcOpenAPI_Client.Create(nil);
  APIClient.SetBaseURL('https://api.example.com');
  APIClient.Authentication.Basic.Enabled := True;
  APIClient.Authentication.Basic.Username := 'apiuser';
  APIClient.Authentication.Basic.Password := '...';

  Request := TsgcOpenAPIRequest.Create;
  Response := TsgcOpenAPIResponse.Create;
  APIClient.HTTP_REQUEST(Request, Response);
end;
  1. CORS, respondido para vocêHabilite o CORSOptions, liste as origens, os métodos e os cabeçalhos que você permite, e o servidor responde ao preflight OPTIONS. Vale para os seus handlers e para os arquivos servidos a partir do DocumentRoot.
  2. Estatísticas em uma atribuiçãoAtribua o TsgcHTTPServerStats ao ServerStats para ter /metrics e /health. Deixe sem atribuir e nenhum contador é mantido.
  3. Tenancy antes do seu código rodarAtribua o TsgcHTTPServer_Tenancy e cada requisição é mapeada primeiro para um tenant. Os seus handlers apenas leem Tenant.
  4. Usuários sem um handlerAtribua o TsgcHTTPServer_Users a Authentication.Users e o portão Basic embutido resolve cada credencial sozinho.
Guia rápido do sgcREST: o TsgcHTTPServerStats habilita os endpoints Metrics e Health, o GET /metrics devolve os contadores de requisições e o GET /health devolve um status JSON.
Três linhas de configuração, e o GET /metrics e o GET /health respondem sozinhos.

A matriz de recursos completa

Antes de comprar

Duas coisas que vale saber antes.

O que o sgcREST exige de você e o que não exige. As duas respostas são curtas, e ambas estão nesta página, não nas letras miúdas.

publicar uma API REST
TsgcHTTPRESTServer        CORS, ServerStats, Tenancy
TsgcHTTPServerStats       /metrics e /health
TsgcHTTPServer_Tenancy    host, caminho, cabeçalho, claim JWT
TsgcHTTPServer_Users      contas, hashes, papéis

publicar a partir de um contrato OpenAPI 3.x
route table + context     spec-first, Delphi 7 a 13
code-first scanner        classe com atributos, XE7 ou superior

consumir uma API
TsgcOpenAPI_Client        qualquer API descrita em OpenAPI

O TsgcHTTPRESTServer é um descendente do
  TsgcHTTPServer, então publica a partir da Port,
  do TLS e da Authentication que você já usa.

O sgcREST é autossuficiente

Independente, com o runtime Core do sgcWebSockets incluído: a pilha de servidor e cliente HTTP/TLS sobre a qual rodam o servidor REST e todas as classes OpenAPI, e a camada JSON que serializa cada requisição e resposta. Um instalador, e o sgcREST roda na biblioteca Indy padrão que acompanha o RAD Studio.

O OpenAPI code-first exige Delphi XE7+

Gerar uma especificação a partir de uma classe Delphi com atributos depende do RTTI que chegou no Delphi XE7, então o TsgcOpenAPICodeFirstScanner e TsgcOpenAPICodeFirstDispatcher compilam a partir do XE7. O servidor REST, os seus companheiros e o motor spec-first rodam em todos os compiladores suportados, do Delphi 7 ao 13.

Nada no meio do caminho é uma caixa-preta

O sgcREST implementa as superfícies REST e OpenAPI que o seu contrato descreve, em vez de embrulhar um gerador de código que você não controla. Requisições, validação e despacho são métodos e eventos de primeira classe, e o código-fonte completo acompanha toda licença, então tudo pode ser depurado passo a passo no seu próprio debugger.

Parte do sgcWebSockets

Um pacote do sgcWebSockets, licenciado separadamente.

O sgcREST reúne as classes REST e OpenAPI do sgcWebSockets em um único pacote. Toda licença inclui as sete classes, o runtime Core do sgcWebSockets, o código-fonte completo, redistribuição livre de royalties e 1 ano de atualizações.

Single

1 licença de desenvolvedor. Use em uma máquina por vez.

€249

Team

2 licenças de desenvolvedor. Use em duas máquinas por vez.

€399

Site

Desenvolvedores ilimitados. Todas as máquinas da empresa.

€649

A renovação é oferecida com um desconto de 50% a 70%. Já usa o sgcWebSockets? O servidor REST vem na edição Professional e superiores, e a edição Enterprise inclui também o servidor OpenAPI, então a sua edição pode já cobrir o que precisa, e o pacote All-Access inclui tudo. O instalador de avaliação é o do sgcWebSockets All-Access, então as sete classes podem ser avaliadas hoje mesmo.

Ver preços e pedir
Depoimentos

O Que os Desenvolvedores Dizem

Confiado 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!
Simone Moretti Desenvolvedor Delphi
O sgcWebSockets é incrível e o suporte de vocês é o melhor!
Christian Meyer Fundador & CTO
Muito obrigado pela ajuda e pelo suporte, eu adoro os componentes de vocês.
Mark Steinfeld CTO

APIs REST, contratos OpenAPI, código nativo.

Um servidor REST com CORS, estatísticas, tenancy e usuários, um servidor OpenAPI que funciona spec-first ou code-first e um cliente OpenAPI para qualquer API descrita, com o runtime Core do sgcWebSockets incluído e o código-fonte completo na caixa.

Mais da eSeGeCe

Outros Produtos da eSeGeCe

O sgcREST é 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 livres de royalties.

sgcWebSockets

WebSocket, HTTP/2, MQTT, AMQP, WebRTC, IA e mais de 30 integrações de API para Delphi, C++ Builder, Lazarus e .NET. É aqui que mora o runtime Core, e a edição Enterprise inclui também o servidor OpenAPI.

sgcHTTP

Servidor HTTP, cliente HTTP/2, cliente gRPC e clientes Google Cloud Pub/Sub, Calendar e FCM para Delphi e C++ Builder. Independente, com o runtime Core do sgcWebSockets incluído.

sgcAuth

Componentes cliente OAuth2 e JWT, além do login com passkeys WebAuthn, um par natural para o repositório de usuários de uma API REST.

sgcAI

Componentes de IA, LLM e MCP para Delphi e C++ Builder. Sete provedores de LLM atrás de um único componente, além de MCP, embeddings e fala.

sgcMQ

Componentes cliente MQTT, AMQP 0.9.1 e 1.0, Apache Kafka e STOMP para Delphi e C++ Builder. Independente, com o runtime Core do sgcWebSockets incluído.

sgcSocial

Componentes cliente Telegram e WhatsApp Business para Delphi e C++ Builder. Independente, com o runtime Core do sgcWebSockets incluído.

sgcOpenAPI

Parser OpenAPI 3.x, gerador de SDK Pascal nativo e mais de 1.195 SDKs de nuvem prontos, para geração de código offline em vez de um cliente em runtime.

sgcHTML

Componentes HTML e de interface no servidor sobre Bootstrap 5 e htmx para Delphi, C++ Builder e .NET.

sgcQUIC

Transporte QUIC bruto e um cliente e servidor HTTP/3, com WebTransport. Um complemento do sgcWebSockets Enterprise.

sgcSign

XAdES, PAdES, CAdES e ASiC para documentos; Authenticode, ClickOnce, NuGet e VSIX para código.

sgcPDF

Crie, edite, visualize, assine, oculte trechos e valide arquivos PDF em Object Pascal puro, sem DLL para distribuir. Licenciado separadamente.

sgcBiometrics

Windows Hello, leitores de impressão digital e o Windows Biometric Framework para Delphi e C++ Builder.

sgcIndy

Componentes Indy TCP/IP atualizados, com TLS moderno, IPv6 e HTTP/2 para Delphi 7 a 13.

Últimas do blog

Ver todas as publicações →

Você está vendo a visão REST & OpenAPI da eSeGeCe.

Mostre outro ângulo →
Garantia de reembolso de 30 diasNão ficou satisfeito? Solicite o reembolso total em até 30 dias após a compra. Ver política de reembolso