Matriz de características de sgcREST: servidor REST y OpenAPI | eSeGeCe

sgcREST: matriz de características

Todo lo que hace sgcREST, repartido entre el servidor REST y sus complementos, el motor del servidor OpenAPI y la familia del cliente OpenAPI. Cada capacidad funciona igual en Delphi y en C++ Builder, y todas las licencias incluyen el código fuente completo. Las subpáginas de componentes aún no están publicadas para este lanzamiento, cada entrada de abajo es autocontenida en esta página.

Servidor REST

CORS, estadísticas, tenencia y usuarios

Servidor OpenAPI

Spec-first y code-first

Cliente OpenAPI

Consume cualquier API descrita con OpenAPI

Estándares y plataformas

Delphi 7 a 13, C++ Builder

sgcREST es autocontenido. Se entrega con el runtime sgcWebSockets Core incluido, así que no es un complemento, y funciona sobre la librería Indy estándar que se instala con RAD Studio.

OpenAPI code-first necesita Delphi XE7 o posterior. Generar una especificación a partir de una clase Delphi con atributos depende de la RTTI introducida en XE7. El servidor REST, sus complementos y el motor OpenAPI spec-first funcionan en Delphi 7 a 13.

Siete clases, tres familias

Cuatro componentes en la página de paleta SGC REST, y tres clases solo de código del servidor y cliente OpenAPI, declaradas en las unidades sgcHTTP_REST_Server* y sgcHTTP_OpenAPI_*.

ComponenteClase¿Paleta?Descripción
Servidor RESTTsgcHTTPRESTServerServidor de API REST construido sobre TsgcHTTPServer, con gestión de CORS y complementos adjuntables de estadísticas/tenencia.
Estadísticas del servidor RESTTsgcHTTPServerStatsContadores de peticiones, seguimiento de latencia, /metrics en formato Prometheus y /health en JSON.
Tenencia del servidor RESTTsgcHTTPServer_TenancyResolución multi-tenant por host, ruta, cabecera o claim JWT.
Usuarios del servidor RESTTsgcHTTPServer_UsersAlmacén local de cuentas: añade, valida, aplica hash, etiqueta roles y persiste usuarios.
Servidor OpenAPI, spec-firstTsgcOpenAPIServerHandlerNo, solo códigoSirve una API desde un documento OpenAPI 3.0/3.1 cargado, con validación de peticiones.
Servidor OpenAPI, code-firstTsgcOpenAPICodeFirstScannerNo, solo códigoGenera la especificación OpenAPI a partir de una clase Delphi con atributos RTTI. Necesita Delphi XE7+.
Cliente OpenAPITsgcOpenAPI_ClientNo, solo códigoCliente de runtime genérico para cualquier endpoint descrito con OpenAPI.

CORS, estadísticas, tenencia y un almacén de usuarios

TsgcHTTPRESTServer es un descendiente de TsgcHTTPServer, así que parte de los mismos bindings y la misma gestión de TLS que comparte todo servidor HTTP de sgc, y añade encima los extras habituales de una API REST.

CapacidadAPINotas
CORSCORSOptions (Enabled, AllowOrigins, AllowHeaders, AllowMethods)Desactivado por defecto. Las peticiones preflight OPTIONS se responden automáticamente una vez activado.
Complemento de estadísticasServerStats: TsgcHTTPServerStatsAdjunta un componente de estadísticas y cada petición se cuenta y cronometra sin tocar los manejadores de ruta.
Complemento de tenenciaTenancy: TsgcHTTPServer_Tenancy, TenantAdjunta un componente de tenencia para resolver el tenant de quien llama; Tenant lee el resultado para la petición actual.
Contadores de peticionesTotalRequests, Status1xx a Status5xxEn TsgcHTTPServerStats. Se cuentan por clase de estado a medida que se envían las respuestas.
LatenciaLatencyMinMs, LatencyAvgMs, LatencyMaxMsSe registra por petición en TsgcHTTPServerStats, se reinicia con Reset.
Endpoint de métricasGetMetricsText, IsMetricsRequestFormato de exposición de texto de Prometheus 0.0.4, servido en /metrics.
Endpoint de saludGetHealthJSON, IsHealthRequestPayload JSON de salud servido en /health, incluye UptimeSeconds y ActiveConnections.
Estadísticas por endpointGetEndpointStats, EndpointsUn par ruta/contador por endpoint, para un informe o una consola de administración.
Resolución de tenantResolution, ResolveTenantEn TsgcHTTPServer_Tenancy. Resuelve por sufijo de host, segmento de ruta, cabecera o claim JWT.
Fuentes del tenantHostSuffix, PathSegmentIndex, HeaderName, ClaimName, DefaultTenantLa fuente que se lee para el modo Resolution configurado, y el valor de respaldo cuando no produce nada.
Resolución personalizadaOnResolveTenantSobrescribe o amplía la lógica de resolución integrada.
Cuentas de usuarioAddUser, DeleteUser, FindUser, ValidateCredentials, SetPassword, EnableUser, UserExistsEn TsgcHTTPServer_Users. Credenciales con sal y hash, nunca devueltas en texto plano.
RolesAddRole, RemoveRole, UserHasRole, GetUserRolesEtiquetas de rol de formato libre por cuenta, comprobadas desde un manejador de ruta.
EnumeraciónCount, GetUserCount, GetUserByIndex, GetUsernamesVistas de solo lectura para un informe o una consola de administración; el hash de contraseña y la sal nunca se incluyen.
PersistenciaLoadUsers, SaveUsers, SaveToFile, LoadFromFile, ExportUsers, ImportUsersStorage.EncryptAtRest cifra el almacén; OnLoadUsers/OnSaveUsers permiten sustituirlo por un backend personalizado.
EventosOnStats, OnResolveTenant, OnValidateCredentials, OnFindUser, OnExceptionUn evento por complemento para los casos que la lógica integrada no cubre.

Enrutado spec-first, generación code-first

Ambos enfoques alimentan la misma tabla de rutas y el mismo contexto de petición; solo cambia el origen del documento OpenAPI.

CapacidadAPINotas
Tabla de rutasTsgcOpenAPIRouteTable (Add, Match)Se construye a partir de la sección paths de una especificación; empareja un verbo y una ruta con un operationId.
Contexto de peticiónTsgcOpenAPIServerContext (Request, Response, PathParams, QueryParams)Una instancia por petición emparejada, liberada cuando termina la petición.
Parámetros tipadosPathParamAsString, PathParamAsInteger, QueryParamAsString, QueryParamAsInteger, QueryParamAsBooleanLee y convierte un valor de ruta o de consulta en una sola llamada.
Acceso al cuerpoBodyAsString, BodyAsJSON, HeaderValueAnaliza el cuerpo de la petición una vez y guarda el resultado en caché.
RespuestaRespondJSON, RespondErrorEscribe un cuerpo JSON con un código de estado, o un payload de error estructurado.
Ciclo de vida de la peticiónBeforeHandle, AfterHandle, HandleExceptionEn TsgcOpenAPIServerHandler. Sobrescríbelos para añadir registro, comprobaciones de autenticación o mapeo de errores personalizado.
ValidaciónTsgcOpenAPIJSONValidatorComprueba los cuerpos de petición y los parámetros de consulta y de ruta contra los JSON Schemas que declara la especificación.
Generación de la especificaciónGenerateSpec, Title, Description, Version, BasePathEn TsgcOpenAPICodeFirstScanner. Produce un documento OpenAPI 3.0 a partir de la RTTI de una clase con atributos.
Atributos de contratosgcServiceContract, sgcRoute, sgcSummary, sgcDescription, sgcTag, sgcResponseAtributos a nivel de clase y de método que rellenan la especificación generada.
Atributos de verbosgcHttpGet, sgcHttpPost, sgcHttpPut, sgcHttpDelete, sgcHttpPatch, sgcHttpHead, sgcHttpOptionsDeclara el verbo HTTP que responde un método anotado.
Enlace de parámetrossgcFromPath, sgcFromQuery, sgcFromHeader, sgcFromBody, sgcRequiredDeclara de dónde se lee cada parámetro del método.
DespachoTsgcOpenAPICodeFirstDispatcher (RegisterController, DispatchOperation, IsRegistered)Invoca directamente el método anotado registrado para un operationId, sin cadena de if manual.
DependenciaDelphi XE7 o posteriorEl escaneo y el despacho code-first dependen de System.Rtti, no disponible antes de XE7. Spec-first no tiene ese requisito.

Un cliente de runtime, cualquier API descrita con OpenAPI

Un cliente genérico para cualquier endpoint descrito con OpenAPI, con autenticación Basic, tokens bearer, OAuth2 genérico y JWT genérico integrados.

CapacidadAPINotas
Llamada baseHTTP_REQUESTEn TsgcOpenAPI_Client. Transporta un par TsgcOpenAPIRequest/TsgcOpenAPIResponse a cualquier endpoint.
URL baseSetBaseURL, GetBaseURLEl endpoint contra el que se resuelve cada ruta relativa de una petición.
Autenticación genéricaAuthentication (Basic, Token, OAuth2, JWT)Autenticación Basic y tokens bearer, además de flujos OAuth2 y JWT genéricos.
TransporteTLSOptions, ProxyOptions, EncodeBodyAsUTF8Configuración estándar de TLS y proxy compartida con el resto de la pila HTTP de sgc.
Progreso y registroOnUpload, OnDownload, Log, LogFileNameSigue cuerpos de petición/respuesta grandes y, opcionalmente, registra cada llamada en un archivo.
Gancho de peticiónOnBeforeRequestInspecciona o modifica una petición antes de enviarla.
Ganchos de TLSOnSSLVerifyPeer, OnSSLGetHandler, OnSSLAfterCreateHandlerVerificación de certificados y personalización del handler, compartidas con el resto de la pila HTTP de sgc.

APIs, compiladores y destinos

Estándares públicos en el cable, y el mismo código fuente en todos los compiladores compatibles.

ÁreaDetalle
OpenAPIOpenAPI 3.0 y 3.1, tanto para el enrutado spec-first del servidor como para los JSON Schemas contra los que valida las peticiones.
Autenticación del clienteAutenticación HTTP Basic y tokens bearer, además de OAuth2 y JWT genéricos.
MétricasFormato de exposición de texto de Prometheus 0.0.4 en /metrics.
PlataformasWindows Win32, Windows Win64, Linux64, macOS, iOS y Android para las siete clases.
DependenciaNinguna más allá del runtime sgcWebSockets Core incluido. Sin complemento adicional para ninguna de las siete clases.
CompiladoresDelphi y C++ Builder 7 a 13. OpenAPI code-first necesita Delphi XE7 o posterior.
EdicionesLa familia del servidor REST también se entrega dentro de sgcWebSockets desde Professional en adelante, el servidor OpenAPI desde Enterprise en adelante, y el cliente OpenAPI desde Standard en adelante.
LicenciasIndependiente. El runtime sgcWebSockets Core viene incluido y se entrega el código fuente completo.
La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

Crea con sgcREST

Descarga la prueba gratuita y monta tu primer endpoint REST o llamada OpenAPI desde Delphi o C++ Builder.