Matriz de recursos do sgcREST: servidor REST & OpenAPI | eSeGeCe

sgcREST matriz de recursos

Tudo o que o sgcREST faz, mapeado no servidor REST e nos seus complementos, no mecanismo de servidor OpenAPI e na família do cliente OpenAPI. Todo recurso funciona igual no Delphi e no C++ Builder, e toda licença entrega o código-fonte completo. As subpáginas de componente ainda não foram publicadas para este lançamento, cada item abaixo é autocontido nesta página.

Servidor REST

CORS, estatísticas, tenancy e usuários

Servidor OpenAPI

Spec-first e code-first

Cliente OpenAPI

Consuma qualquer API descrita em OpenAPI

Especificações & plataformas

Delphi 7 a 13, C++ Builder

O sgcREST é autossuficiente. Ele já vem com o runtime sgcWebSockets Core embutido, então não é um complemento, e roda sobre a biblioteca Indy padrão que acompanha o RAD Studio.

OpenAPI code-first precisa do Delphi XE7 ou posterior. Gerar uma especificação a partir de uma classe Delphi anotada depende do RTTI introduzido no XE7. O servidor REST, os seus complementos e o mecanismo OpenAPI spec-first rodam do Delphi 7 ao 13.

Sete classes, três famílias

Quatro componentes na página de paleta SGC REST, e três classes de servidor e cliente OpenAPI apenas de código, declaradas nas units sgcHTTP_REST_Server* e sgcHTTP_OpenAPI_*.

ComponenteClasseNa paleta?Descrição
Servidor RESTTsgcHTTPRESTServerSimServidor REST API construído sobre o TsgcHTTPServer, com tratamento de CORS e complementos anexáveis de estatísticas/tenancy.
Estatísticas do servidor RESTTsgcHTTPServerStatsSimContadores de requisições, rastreamento de latência, /metrics no formato Prometheus e /health em JSON.
Tenancy do servidor RESTTsgcHTTPServer_TenancySimResolução multi-tenant por host, caminho, cabeçalho ou claim JWT.
Usuários do servidor RESTTsgcHTTPServer_UsersSimArmazenamento local de contas: adicionar, validar, hashear, marcar por papel e persistir usuários.
Servidor OpenAPI, Spec-FirstTsgcOpenAPIServerHandlerNão, apenas códigoServe uma API a partir de um documento OpenAPI 3.0/3.1 carregado, com validação de requisições.
Servidor OpenAPI, Code-FirstTsgcOpenAPICodeFirstScannerNão, apenas códigoGera a especificação OpenAPI a partir de uma classe Delphi anotada com RTTI. Precisa do Delphi XE7+.
Cliente OpenAPITsgcOpenAPI_ClientNão, apenas códigoCliente de runtime genérico para qualquer endpoint descrito em OpenAPI.

CORS, estatísticas, tenancy e um armazenamento de usuários

O TsgcHTTPRESTServer é um descendente de TsgcHTTPServer, então parte dos mesmos bindings e tratamento de TLS que todo servidor HTTP sgc compartilha, e adiciona por cima os extras habituais de uma API REST.

RecursoAPIObservações
CORSCORSOptions (Enabled, AllowOrigins, AllowHeaders, AllowMethods)Desativado por padrão. Requisições OPTIONS de preflight são respondidas automaticamente quando ativado.
Complemento de estatísticasServerStats: TsgcHTTPServerStatsAnexe um componente de estatísticas e toda requisição é contada e cronometrada sem tocar nos manipuladores de rota.
Complemento de tenancyTenancy: TsgcHTTPServer_Tenancy, TenantAnexe um componente de tenancy para resolver o tenant do chamador; Tenant lê o resultado para a requisição atual.
Contadores de requisiçõesTotalRequests, Status1xx a Status5xxNo TsgcHTTPServerStats. Contados por classe de status conforme as respostas são enviadas.
LatênciaLatencyMinMs, LatencyAvgMs, LatencyMaxMsRastreada por requisição no TsgcHTTPServerStats, reiniciada com Reset.
Endpoint de métricasGetMetricsText, IsMetricsRequestFormato de exposição de texto Prometheus 0.0.4, servido em /metrics.
Endpoint de saúdeGetHealthJSON, IsHealthRequestPayload de saúde em JSON servido em /health, inclui UptimeSeconds e ActiveConnections.
Estatísticas por endpointGetEndpointStats, EndpointsUm par caminho/contagem por endpoint, para um relatório ou um console administrativo.
Resolução de tenantResolution, ResolveTenantNo TsgcHTTPServer_Tenancy. Resolve por sufixo de host, segmento de caminho, cabeçalho ou claim JWT.
Fontes de tenantHostSuffix, PathSegmentIndex, HeaderName, ClaimName, DefaultTenantA fonte lida para o modo Resolution configurado, e o valor padrão quando ela não retorna nada.
Resolução personalizadaOnResolveTenantSobrescreva ou estenda a lógica de resolução embutida.
Contas de usuárioAddUser, DeleteUser, FindUser, ValidateCredentials, SetPassword, EnableUser, UserExistsNo TsgcHTTPServer_Users. Credenciais salgadas e hasheadas, nunca retornadas em forma clara.
PapéisAddRole, RemoveRole, UserHasRole, GetUserRolesTags de papel livres por conta, verificadas a partir de um manipulador de rota.
EnumeraçãoCount, GetUserCount, GetUserByIndex, GetUsernamesVisões somente leitura para um relatório ou um console administrativo; o hash e o salt da senha nunca são incluídos.
PersistênciaLoadUsers, SaveUsers, SaveToFile, LoadFromFile, ExportUsers, ImportUsersStorage.EncryptAtRest criptografa o armazenamento; OnLoadUsers/OnSaveUsers trocam por um backend personalizado.
EventosOnStats, OnResolveTenant, OnValidateCredentials, OnFindUser, OnExceptionUm evento por complemento para os casos que a lógica embutida não cobre.

Roteamento spec-first, geração code-first

As duas abordagens alimentam a mesma tabela de rotas e o mesmo contexto de requisição; apenas a origem do documento OpenAPI muda.

RecursoAPIObservações
Tabela de rotasTsgcOpenAPIRouteTable (Add, Match)Construída a partir da seção paths de uma especificação; associa um verbo e um caminho a um operationId.
Contexto de requisiçãoTsgcOpenAPIServerContext (Request, Response, PathParams, QueryParams)Uma instância por requisição correspondida, liberada quando a requisição termina.
Parâmetros tipadosPathParamAsString, PathParamAsInteger, QueryParamAsString, QueryParamAsInteger, QueryParamAsBooleanLê e converte um valor de caminho ou de query em uma única chamada.
Acesso ao corpoBodyAsString, BodyAsJSON, HeaderValueAnalisa o corpo da requisição uma vez e armazena o resultado em cache.
RespostaRespondJSON, RespondErrorEscreve um corpo JSON com um código de status, ou um payload de erro estruturado.
Ciclo de vida da requisiçãoBeforeHandle, AfterHandle, HandleExceptionNo TsgcOpenAPIServerHandler. Sobrescreva para adicionar logging, verificações de autenticação ou mapeamento de erro personalizado.
ValidaçãoTsgcOpenAPIJSONValidatorVerifica corpos de requisição, parâmetros de query e de caminho contra os JSON Schemas que a especificação declara.
Geração de especificaçãoGenerateSpec, Title, Description, Version, BasePathNo TsgcOpenAPICodeFirstScanner. Produz um documento OpenAPI 3.0 a partir do RTTI de uma classe anotada.
Atributos de contratosgcServiceContract, sgcRoute, sgcSummary, sgcDescription, sgcTag, sgcResponseAtributos em nível de classe e método que preenchem a especificação gerada.
Atributos de verbosgcHttpGet, sgcHttpPost, sgcHttpPut, sgcHttpDelete, sgcHttpPatch, sgcHttpHead, sgcHttpOptionsDeclara o verbo HTTP que um método anotado responde.
Vinculação de parâmetrossgcFromPath, sgcFromQuery, sgcFromHeader, sgcFromBody, sgcRequiredDeclara de onde cada parâmetro de método é lido.
DispatchTsgcOpenAPICodeFirstDispatcher (RegisterController, DispatchOperation, IsRegistered)Invoca diretamente o método anotado registrado para um operationId, sem cadeia if manual.
DependênciaDelphi XE7 ou posteriorO escaneamento e o dispatch code-first dependem de System.Rtti, indisponível antes do XE7. O spec-first não tem esse requisito.

Um cliente de runtime, qualquer API descrita em OpenAPI

Um cliente genérico para qualquer endpoint descrito em OpenAPI, com autenticação Basic, bearer tokens, OAuth2 genérico e JWT genérico integrados.

RecursoAPIObservações
Chamada baseHTTP_REQUESTNo TsgcOpenAPI_Client. Carrega um par TsgcOpenAPIRequest/TsgcOpenAPIResponse para qualquer endpoint.
URL baseSetBaseURL, GetBaseURLO endpoint contra o qual todo caminho relativo de uma requisição é resolvido.
Autenticação genéricaAuthentication (Basic, Token, OAuth2, JWT)Autenticação Basic e bearer tokens, além de fluxos genéricos de OAuth2 e JWT.
TransporteTLSOptions, ProxyOptions, EncodeBodyAsUTF8Configuração padrão de TLS e proxy compartilhada com o restante da pilha HTTP do sgc.
Progresso & loggingOnUpload, OnDownload, Log, LogFileNameAcompanhe corpos grandes de requisição/resposta e opcionalmente registre toda chamada em um arquivo.
Gancho de requisiçãoOnBeforeRequestInspecione ou altere uma requisição antes de ela ser enviada.
Ganchos de TLSOnSSLVerifyPeer, OnSSLGetHandler, OnSSLAfterCreateHandlerVerificação de certificado e personalização de handler, compartilhados com o restante da pilha HTTP do sgc.

APIs, compiladores e destinos

Especificações públicas no wire, e o mesmo código-fonte em todo compilador compatível.

ÁreaDetalhe
OpenAPIOpenAPI 3.0 e 3.1, tanto para o roteamento spec-first do servidor quanto para os JSON Schemas contra os quais a validação de requisições verifica.
Autenticação do clienteAutenticação HTTP Basic e bearer tokens, além de OAuth2 e JWT genéricos.
MétricasFormato de exposição de texto Prometheus 0.0.4 em /metrics.
PlataformasWindows Win32, Windows Win64, Linux64, macOS, iOS e Android para as sete classes.
DependênciaNenhuma além do runtime sgcWebSockets Core embutido. Nenhum complemento adicional para qualquer uma das sete classes.
CompiladoresDelphi e C++ Builder 7 até 13. O OpenAPI code-first precisa do Delphi XE7 ou posterior.
EdiçõesA família do servidor REST também vem dentro do sgcWebSockets a partir da Professional, o servidor OpenAPI a partir da Enterprise, e o cliente OpenAPI a partir da Standard.
LicenciamentoAutônomo. O runtime sgcWebSockets Core vem embutido e o código-fonte completo está incluído.
Melhor custo-benefício: All-AccessTodos os produtos da eSeGeCe, com Suporte Premium incluído, a partir de €1,059/ano.
Ver preços do All-Access

Construa com o sgcREST

Baixe a avaliação gratuita e monte o seu primeiro endpoint REST ou chamada OpenAPI a partir do Delphi ou do C++ Builder.