sgcREST API REST, nativos en Delphi. con OpenAPI integrado.

Dos tareas, siete clases. TsgcHTTPRESTServer publica una API REST con CORS, /metrics y /health, multi-tenencia y un almacén de usuarios. Un motor OpenAPI sirve una API directamente desde un contrato OpenAPI 3.x, o genera el contrato a partir de tu clase Delphi, y TsgcOpenAPI_Client consume cualquier API descrita con OpenAPI. El runtime Core de sgcWebSockets está incluido.

Publica tu primer endpoint en pocas líneas →
  • Delphi 7 a 13
  • C++ Builder
  • OpenAPI 3.x
  • CORS
  • /metrics y /health
  • Multi-tenencia
  • Código fuente completo
  • 4Componentes de la paleta: servidor REST, estadísticas, tenencia y usuarios
  • 7Clases en total: familia del servidor REST, motor y cliente OpenAPI
  • 4Esquemas de autenticación del cliente: Basic, token bearer, OAuth2 y JWT
  • 2Endpoints integrados, /metrics y /health, ambos opcionales
  • 100%Código fuente incluido en cada licencia
Míralo funcionar

Descubre sgcREST en dos minutos.

Un recorrido narrado y subtitulado por el servidor REST: el servidor HTTP que ya conoces, más las cuatro cosas que una API REST acaba necesitando siempre. No se descarga nada hasta que pulses reproducir.

Inicio rápido de sgcREST

Crea un servidor de API REST en Delphi con CORS, estadísticas en vivo, tenencia y usuarios.

  1. Todo heredadoTsgcHTTPRESTServer desciende de TsgcHTTPServer: Port, TLS, Authentication, sesiones, compresión, el pool de hilos, el firewall y el limitador de tasa.
  2. Todo es opcionalCORS está desactivado por defecto, y ServerStats y Tenancy están sin asignar. Nada se activa solo tras una actualización.
  3. CORSIndica los orígenes, métodos y cabeceras que permites y el servidor responde por ti al preflight OPTIONS.
  4. Métricas y estadoAsigna TsgcHTTPServerStats y obtén /metrics y /health, ambos tras la puerta de autenticación del servidor.
  5. Multi-tenenciaCada petición se asigna a un tenant a partir del host, la ruta, una cabecera o una claim JWT. Los manejadores solo leen Tenant.
  6. Un almacén de usuarios ya hechoCuentas, hashes de contraseña con sal y roles. La puerta Basic integrada resuelve cada credencial contra él.
Qué incluye

Cuatro componentes de paleta, tres clases solo de código.

El servidor REST y sus tres complementos son componentes no visuales de la página SGC REST de la paleta. El motor del servidor OpenAPI y el cliente OpenAPI están en las unidades sgcHTTP_OpenAPI_* : créalo, configúralo y llama directamente a sus métodos.

Servidor REST · un servidor, tres complementos

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

TsgcHTTPRESTServer amplía el estándar TsgcHTTPServer con gestión de CORS mediante CORSOptions, y dos propiedades para complementos opcionales. TsgcHTTPServerStats cuenta cada petición por clase de estado, registra la latencia mínima, media y máxima, y sirve un endpoint en formato Prometheus /metrics además de un endpoint JSON /health , con GetEndpointStats para un desglose por ruta. TsgcHTTPServer_Tenancy resuelve el tenant del llamante a partir del nombre de host, un segmento de la ruta, una cabecera de la petición o una claim JWT, y Tenant lee el resultado para la petición que se está atendiendo. TsgcHTTPServer_Users es un almacén independiente de cuentas, hashes de contraseña con sal y roles.

Servidor OpenAPI · spec-first o code-first

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

Carga un documento OpenAPI 3.0 o 3.1 y la tabla de rutas se construye a partir de su sección paths. Una petición que coincide llega como un TsgcOpenAPIServerContext, con parámetros de ruta y de consulta tipados, ayudas para el cuerpo y RespondJSON/RespondError, y el validador comprueba los cuerpos y los parámetros de consulta y de ruta contra los JSON Schemas que declara la especificación. Code-first invierte la fuente de verdad: anota una clase Delphi simple y el escáner genera la especificación.

Cliente OpenAPI · cualquier API descrita

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

Un cliente genérico en tiempo de ejecución para cualquier endpoint que describa un documento OpenAPI, y la clase base de los SDK generados. Authentication cubre la autenticación Basic y los tokens bearer, además de OAuth2 y JWT genéricos, HTTP_REQUEST realiza la llamada, y OnBeforeRequest, OnUpload y OnDownload la siguen.

Ver todos los componentes y propiedades

Cómo funciona

Un servidor, complementos combinables.

Las siete clases se reparten con claridad por función. El servidor REST lleva el tráfico HTTP, tres complementos añaden lo que necesita una API en producción, y el motor OpenAPI convierte una especificación, escrita o generada, en una tabla de rutas operativa.

Un TsgcHTTPServer con extras

TsgcHTTPRESTServer hereda los enlaces, el TLS y la gestión de HTTP/2 del servidor HTTP simple que se incluye en todas las ediciones de sgcWebSockets, y añade CORS y las propiedades de complemento, de modo que una API REST obtiene métricas, comprobaciones de estado y multi-tenencia sin un framework aparte.

Complementos, no incrustados

Las estadísticas, la tenencia y los usuarios son componentes independientes. Conecta los que necesite cada API y deja el resto fuera. Un complemento conectado pero sin configurar no le cuesta nada al servidor comprobarlo.

Spec-first y code-first, una sola tabla de rutas

Tanto si el documento OpenAPI viene de un archivo que cargaste como de TsgcOpenAPICodeFirstScanner.GenerateSpec escanear una clase con atributos, la misma tabla de rutas y el mismo contexto de petición sirven para ambos.

Todos los callbacks que necesita la especificación

Los eventos de validación y autenticación reciben el TsgcOpenAPIServerContextya analizado, con PathParams, QueryParams y RespondJSON, y OnException captura los errores de los manejadores antes de que lleguen a la red, de modo que nada de por qué se aceptó o rechazó una llamada queda oculto.

Seis plataformas, sin complementos

Las siete clases funcionan con la biblioteca Indy estándar que se incluye con RAD Studio: Windows Win32 y Win64, Linux64, macOS, iOS y Android. De Delphi 7 a RAD Studio 13 y en C++ Builder.

El runtime Core está incluido

El runtime Core de sgcWebSockets aporta la pila HTTP/TLS sobre la que funcionan el servidor REST y todas las clases OpenAPI, y la capa JSON que serializa cada petición y respuesta. Su código fuente completo forma parte del paquete, como todo lo demás.

Primeros pasos

Publica un endpoint, publica un contrato o llama a uno.

El servidor REST te entrega la petición directamente. El servidor OpenAPI te entrega una operación ya validada y emparejada. El cliente OpenAPI llama a los endpoints de otros. Los tres compilan igual en Delphi 7 a 13 y en 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, resuelto por tiActiva CORSOptions, indica los orígenes, métodos y cabeceras que permites y el servidor responde al preflight OPTIONS. Se aplica a tus manejadores y a los archivos servidos desde DocumentRoot.
  2. Estadísticas con una asignaciónAsigna TsgcHTTPServerStats a ServerStats para obtener /metrics y /health. Si lo dejas sin asignar, no se mantiene ningún contador.
  3. Tenencia antes de que se ejecute tu códigoAsigna TsgcHTTPServer_Tenancy y cada petición se asigna primero a un tenant. Tus manejadores solo leen Tenant.
  4. Usuarios sin manejadorAsigna TsgcHTTPServer_Users a Authentication.Users y la puerta Basic integrada resuelve cada credencial por sí sola.
Inicio rápido de sgcREST: TsgcHTTPServerStats activa los endpoints Metrics y Health, GET /metrics devuelve los contadores de peticiones y GET /health devuelve un estado en JSON.
Tres líneas de configuración y GET /metrics y GET /health responden por sí solos.

La matriz de características completa

Antes de comprar

Dos cosas que conviene saber antes.

Qué necesita sgcREST de ti y qué no. Las dos respuestas son breves, y las dos están en esta página y no en la letra pequeña.

publicar una API REST
TsgcHTTPRESTServer        CORS, ServerStats, Tenancy
TsgcHTTPServerStats       /metrics y /health
TsgcHTTPServer_Tenancy    host, ruta, cabecera, claim JWT
TsgcHTTPServer_Users      cuentas, hashes, roles

publicar desde un contrato OpenAPI 3.x
tabla de rutas + contexto     spec-first, Delphi 7 a 13
escáner code-first        clase con atributos, XE7 en adelante

consumir una API
TsgcOpenAPI_Client        cualquier API descrita con OpenAPI

TsgcHTTPRESTServer es un descendiente de
  TsgcHTTPServer, así que publica con el Port,
  el TLS y la Authentication que ya usas.

sgcREST es autocontenido

Independiente, con el runtime Core de sgcWebSockets incluido: la pila de servidor y cliente HTTP/TLS sobre la que funcionan el servidor REST y todas las clases OpenAPI, y la capa JSON que serializa cada petición y respuesta. Un solo instalador, y sgcREST funciona con la biblioteca Indy estándar que se incluye con RAD Studio.

El OpenAPI code-first necesita Delphi XE7+

Generar una especificación a partir de una clase Delphi con atributos se apoya en el RTTI que llegó con Delphi XE7, así que TsgcOpenAPICodeFirstScanner y TsgcOpenAPICodeFirstDispatcher compilan desde XE7 en adelante. El servidor REST, sus complementos y el motor spec-first funcionan en todos los compiladores soportados, de Delphi 7 a 13.

Nada intermedio es una caja negra

sgcREST implementa las superficies REST y OpenAPI que describe tu contrato en lugar de envolver un generador de código que no controlas. Las peticiones, la validación y el despacho son métodos y eventos de primera clase, y cada licencia incluye el código fuente completo, así que todo se recorre paso a paso en tu propio depurador.

Parte de sgcWebSockets

Un paquete de sgcWebSockets, con licencia propia.

sgcREST reúne las clases REST y OpenAPI de sgcWebSockets en un único paquete. Cada licencia incluye las siete clases, el runtime Core de sgcWebSockets, el código fuente completo, redistribución sin royalties y 1 año de actualizaciones.

Single

1 licencia de desarrollador. Úsala en una máquina a la vez.

€249

Team

2 licencias de desarrollador. Úsalas en dos máquinas a la vez.

€399

Site

Desarrolladores ilimitados. Todas las máquinas de la empresa.

€649

La renovación tiene un descuento del 50% al 70% sobre el precio de lista. ¿Ya usas sgcWebSockets? El servidor REST se incluye en Professional y superiores y la edición Enterprise incluye también el servidor OpenAPI, así que tu edición puede cubrirte ya, y el paquete All-Access lo incluye todo. El instalador de prueba es el de sgcWebSockets All-Access, por lo que hoy puedes evaluar las siete clases.

Ver precios y pedir
Testimonios

Qué dicen los desarrolladores

La confianza de desarrolladores de Delphi, C++ Builder, Lazarus y .NET en todo el mundo.

Vuestra librería sgcWebSockets es muy útil y fácil de configurar. ¡Seguid así!
Simone Moretti Desarrollador Delphi
sgcWebSockets es increíble y vuestro soporte es el mejor.
Christian Meyer Fundador y CTO
Muchas gracias por vuestra ayuda y soporte, me encantan vuestros componentes.
Mark Steinfeld CTO

API REST, contratos OpenAPI, código nativo.

Un servidor REST con CORS, estadísticas, tenencia y usuarios, un servidor OpenAPI que funciona spec-first o code-first y un cliente OpenAPI para cualquier API descrita, con el runtime Core de sgcWebSockets incluido y el código fuente completo.

Más de eSeGeCe

Otros productos de eSeGeCe

sgcREST es una de las bibliotecas de componentes de eSeGeCe para Delphi, C++ Builder y .NET. Comparten convenciones, incluyen el código fuente completo y se distribuyen sin royalties.

sgcWebSockets

WebSocket, HTTP/2, MQTT, AMQP, WebRTC, IA y más de 30 integraciones de API para Delphi, C++ Builder, Lazarus y .NET. Aquí vive el runtime Core, y su edición Enterprise incluye también el servidor OpenAPI.

sgcHTTP

Servidor HTTP, cliente HTTP/2, cliente gRPC y clientes de Google Cloud Pub/Sub, Calendar y FCM para Delphi y C++ Builder. Producto independiente, incluye el runtime de sgcWebSockets Core.

sgcAuth

Componentes cliente OAuth2 y JWT, además de inicio de sesión con passkeys WebAuthn, un complemento natural del almacén de usuarios de una API REST.

sgcAI

Componentes de IA, LLM y MCP para Delphi y C++ Builder. Siete proveedores de LLM tras un único componente, además de MCP, embeddings y voz.

sgcMQ

Componentes cliente de MQTT, AMQP 0.9.1 y 1.0, Apache Kafka y STOMP para Delphi y C++ Builder. Producto independiente, incluye el runtime de sgcWebSockets Core.

sgcSocial

Componentes cliente de Telegram y WhatsApp Business para Delphi y C++ Builder. Independiente, con el runtime Core de sgcWebSockets incluido.

sgcOpenAPI

Parser de OpenAPI 3.x, generador nativo de SDK en Pascal y más de 1.195 SDK de nube ya compilados, para generación de código sin conexión en lugar de un cliente en tiempo de ejecución.

sgcHTML

Componentes HTML y de interfaz en el servidor sobre Bootstrap 5 y htmx para Delphi, C++ Builder y .NET.

sgcQUIC

Transporte QUIC en bruto y un cliente y servidor HTTP/3, con WebTransport. Un add-on de sgcWebSockets Enterprise.

sgcSign

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

sgcPDF

Crea, edita, visualiza, firma, redacta y valida archivos PDF en Object Pascal puro, sin ninguna DLL que implementar. Con licencia propia.

sgcBiometrics

Windows Hello, sensores de huella dactilar y Windows Biometric Framework para Delphi y C++ Builder.

sgcIndy

Componentes Indy TCP/IP actualizados con TLS moderno, IPv6 y HTTP/2 para Delphi 7 a 13.

Lo último del blog

Ver todas las publicaciones →

Estás viendo la vista REST y OpenAPI de eSeGeCe.

Muéstrame otro enfoque →
Garantía de devolución de 30 días¿No estás satisfecho? Solicita un reembolso completo en los 30 días posteriores a la compra. Ver política de reembolso