Matryca funkcji sgcREST: serwer REST i OpenAPI | eSeGeCe

sgcREST Matryca funkcji

Wszystko, co robi sgcREST, rozpisane na serwer REST i jego komponenty towarzyszące, silnik serwera OpenAPI oraz rodzinę klienta OpenAPI. Każda funkcja działa tak samo w Delphi i C++ Builder, a każda licencja zawiera pełny kod źródłowy. Podstrony komponentów nie są jeszcze opublikowane przy tej premierze, każdy wpis poniżej jest samodzielny na tej stronie.

Serwer REST

CORS, statystyki, wielodostępność i użytkownicy

Serwer OpenAPI

Spec-first i code-first

Klient OpenAPI

Korzystaj z dowolnego API opisanego w OpenAPI

Standardy i platformy

Delphi od 7 do 13, C++ Builder

sgcREST jest samowystarczalny. Jest dostarczany z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core, więc nie jest dodatkiem, i działa na standardowej bibliotece Indy dostarczanej z RAD Studio.

OpenAPI code-first potrzebuje Delphi XE7 lub nowszego. Generowanie specyfikacji z oznaczonej atrybutami klasy Delphi opiera się na RTTI wprowadzonym w XE7. Serwer REST, jego komponenty towarzyszące oraz silnik OpenAPI spec-first działają na Delphi od 7 do 13.

Siedem klas, trzy rodziny

Cztery komponenty na stronie palety SGC REST oraz trzy klasy serwera i klienta OpenAPI dostępne wyłącznie z kodu, zadeklarowane w modułach sgcHTTP_REST_Server* i sgcHTTP_OpenAPI_*.

KomponentKlasaPaleta?Opis
Serwer RESTTsgcHTTPRESTServerTakSerwer API REST zbudowany na TsgcHTTPServer, z obsługą CORS oraz dołączanymi komponentami towarzyszącymi statystyk i wielodostępności.
Statystyki serwera RESTTsgcHTTPServerStatsTakLiczniki żądań, śledzenie opóźnień, Prometheus /metrics i JSON /health.
Wielodostępność serwera RESTTsgcHTTPServer_TenancyTakRozpoznawanie wielodostępne na podstawie hosta, ścieżki, nagłówka lub oświadczenia JWT.
Użytkownicy serwera RESTTsgcHTTPServer_UsersTakLokalny magazyn kont: dodawanie, walidacja, haszowanie, tagi ról i utrwalanie użytkowników.
Serwer OpenAPI, spec-firstTsgcOpenAPIServerHandlerNie, tylko kodSerwuje API na podstawie wczytanego dokumentu OpenAPI 3.0/3.1, z walidacją żądań.
Serwer OpenAPI, code-firstTsgcOpenAPICodeFirstScannerNie, tylko kodGeneruje specyfikację OpenAPI z klasy Delphi oznaczonej atrybutami RTTI. Wymaga Delphi XE7+.
Klient OpenAPITsgcOpenAPI_ClientNie, tylko kodUniwersalny klient uruchomieniowy dla dowolnego punktu końcowego opisanego w OpenAPI.

CORS, statystyki, wielodostępność i magazyn użytkowników

TsgcHTTPRESTServer jest potomkiem TsgcHTTPServer, więc wychodzi z tych samych powiązań i obsługi TLS, które dzieli każdy serwer sgc HTTP, i dokłada na to zwykłe dodatki API REST.

MożliwośćAPIUwagi
CORSCORSOptions (Enabled, AllowOrigins, AllowHeaders, AllowMethods)Domyślnie wyłączone. Żądania wstępne OPTIONS są obsługiwane automatycznie po włączeniu.
Komponent statystykServerStats: TsgcHTTPServerStatsPodłącz komponent statystyk, a każde żądanie jest liczone i mierzone w czasie bez dotykania procedur obsługi tras.
Komponent wielodostępnościTenancy: TsgcHTTPServer_Tenancy, TenantPodłącz komponent wielodostępności, aby rozpoznać dzierżawcę wywołującego; Tenant odczytuje wynik dla bieżącego żądania.
Liczniki żądańTotalRequests, Status1xx do Status5xxNa TsgcHTTPServerStats. Liczone według klasy statusu w miarę wysyłania odpowiedzi.
OpóźnienieLatencyMinMs, LatencyAvgMs, LatencyMaxMsŚledzone dla każdego żądania na TsgcHTTPServerStats, resetowane przez Reset.
Punkt końcowy metrykGetMetricsText, IsMetricsRequestFormat ekspozycji tekstowej Prometheus 0.0.4, serwowany pod /metrics.
Punkt końcowy kondycjiGetHealthJSON, IsHealthRequestŁadunek JSON kondycji serwowany pod /health, obejmuje UptimeSeconds i ActiveConnections.
Statystyki per punkt końcowyGetEndpointStats, EndpointsJedna para ścieżka/liczba na punkt końcowy, do raportu albo konsoli administracyjnej.
Rozpoznawanie dzierżawcyResolution, ResolveTenantNa TsgcHTTPServer_Tenancy. Rozpoznaje na podstawie sufiksu hosta, segmentu ścieżki, nagłówka lub oświadczenia JWT.
Źródła dzierżawcyHostSuffix, PathSegmentIndex, HeaderName, ClaimName, DefaultTenantŹródło odczytywane dla skonfigurowanego trybu Resolution oraz wartość zastępcza, gdy nic nie zwróci.
Niestandardowe rozpoznawanieOnResolveTenantNadpisz albo rozszerz wbudowaną logikę rozpoznawania.
Konta użytkownikówAddUser, DeleteUser, FindUser, ValidateCredentials, SetPassword, EnableUser, UserExistsNa TsgcHTTPServer_Users. Poświadczenia z solą i haszowaniem, nigdy nie zwracane w postaci jawnej.
RoleAddRole, RemoveRole, UserHasRole, GetUserRolesDowolne tagi ról dla każdego konta, sprawdzane z procedury obsługi trasy.
WyliczanieCount, GetUserCount, GetUserByIndex, GetUsernamesWidoki tylko do odczytu do raportu albo konsoli administracyjnej; hasz hasła i sól nigdy nie są w nich zawarte.
UtrwalanieLoadUsers, SaveUsers, SaveToFile, LoadFromFile, ExportUsers, ImportUsersStorage.EncryptAtRest szyfruje magazyn; OnLoadUsers/OnSaveUsers podmieniają na własny backend.
ZdarzeniaOnStats, OnResolveTenant, OnValidateCredentials, OnFindUser, OnExceptionJedno zdarzenie na komponent towarzyszący, dla przypadków, których nie obejmuje wbudowana logika.

Trasowanie spec-first, generowanie code-first

Oba podejścia trafiają do tej samej tablicy tras i kontekstu żądania; różni się tylko źródło dokumentu OpenAPI.

MożliwośćAPIUwagi
Tablica trasTsgcOpenAPIRouteTable (Add, Match)Budowana z sekcji paths specyfikacji; dopasowuje czasownik i ścieżkę do operationId.
Kontekst żądaniaTsgcOpenAPIServerContext (Request, Response, PathParams, QueryParams)Jedna instancja na dopasowane żądanie, zwalniana po zakończeniu żądania.
Typowane parametryPathParamAsString, PathParamAsInteger, QueryParamAsString, QueryParamAsInteger, QueryParamAsBooleanOdczytuje i konwertuje wartość ścieżki lub zapytania w jednym wywołaniu.
Dostęp do treściBodyAsString, BodyAsJSON, HeaderValueParsuje treść żądania raz i buforuje wynik.
OdpowiadanieRespondJSON, RespondErrorZapisuje treść JSON z kodem statusu albo ustrukturyzowany ładunek błędu.
Cykl życia żądaniaBeforeHandle, AfterHandle, HandleExceptionNa TsgcOpenAPIServerHandler. Nadpisz, aby dodać logowanie, kontrolę uwierzytelniania albo własne mapowanie błędów.
WalidacjaTsgcOpenAPIJSONValidatorSprawdza treści żądań, parametry zapytania i ścieżki względem schematów JSON zadeklarowanych w specyfikacji.
Generowanie specyfikacjiGenerateSpec, Title, Description, Version, BasePathNa TsgcOpenAPICodeFirstScanner. Wytwarza dokument OpenAPI 3.0 z RTTI oznaczonej atrybutami klasy.
Atrybuty kontraktusgcServiceContract, sgcRoute, sgcSummary, sgcDescription, sgcTag, sgcResponseAtrybuty na poziomie klasy i metody, które wypełniają wygenerowaną specyfikację.
Atrybuty czasownikasgcHttpGet, sgcHttpPost, sgcHttpPut, sgcHttpDelete, sgcHttpPatch, sgcHttpHead, sgcHttpOptionsDeklaruje czasownik HTTP, na który odpowiada oznaczona atrybutem metoda.
Wiązanie parametrówsgcFromPath, sgcFromQuery, sgcFromHeader, sgcFromBody, sgcRequiredDeklaruje, skąd odczytywany jest każdy parametr metody.
RozdzielanieTsgcOpenAPICodeFirstDispatcher (RegisterController, DispatchOperation, IsRegistered)Wywołuje bezpośrednio oznaczoną atrybutem metodę zarejestrowaną dla operationId, bez ręcznego łańcucha if.
ZależnośćDelphi XE7 lub nowszySkanowanie i rozdzielanie code-first opierają się na System.Rtti, niedostępnym przed XE7. Spec-first nie ma takiego wymagania.

Jeden klient uruchomieniowy, dowolne API opisane w OpenAPI

Uniwersalny klient dla dowolnego punktu końcowego opisanego w OpenAPI, z wbudowanym uwierzytelnianiem Basic, tokenami bearer, ogólnym OAuth2 i ogólnym JWT.

MożliwośćAPIUwagi
Wywołanie bazoweHTTP_REQUESTNa TsgcOpenAPI_Client. Niesie parę TsgcOpenAPIRequest/TsgcOpenAPIResponse do dowolnego punktu końcowego.
Adres bazowySetBaseURL, GetBaseURLPunkt końcowy, względem którego rozwiązywana jest każda względna ścieżka w żądaniu.
Uwierzytelnianie ogólneAuthentication (Basic, Token, OAuth2, JWT)Uwierzytelnianie Basic i tokeny bearer, a także ogólne przepływy OAuth2 i JWT.
TransportTLSOptions, ProxyOptions, EncodeBodyAsUTF8Standardowa konfiguracja TLS i proxy, wspólna z resztą stosu sgc HTTP.
Postęp i logowanieOnUpload, OnDownload, Log, LogFileNameŚledź duże treści żądań/odpowiedzi i opcjonalnie loguj każde wywołanie do pliku.
Hak żądaniaOnBeforeRequestSprawdź albo zmień żądanie przed wysłaniem.
Haki TLSOnSSLVerifyPeer, OnSSLGetHandler, OnSSLAfterCreateHandlerWeryfikacja certyfikatu i dostosowanie handlera, wspólne z resztą stosu sgc HTTP.

API, kompilatory i platformy docelowe

Oficjalne standardy na łączu i te same źródła we wszystkich obsługiwanych kompilatorach.

ObszarSzczegóły
OpenAPIOpenAPI 3.0 i 3.1, zarówno dla trasowania spec-first serwera, jak i dla schematów JSON, względem których waliduje żądania.
Uwierzytelnianie klientaUwierzytelnianie HTTP Basic i tokeny bearer, a także ogólne OAuth2 i JWT.
MetrykiFormat ekspozycji tekstowej Prometheus 0.0.4 pod /metrics.
PlatformyWindows Win32, Windows Win64, Linux64, macOS, iOS i Android dla wszystkich siedmiu klas.
ZależnośćŻadna poza dołączonym środowiskiem uruchomieniowym sgcWebSockets Core. Żaden dodatkowy dodatek dla żadnej z siedmiu klas.
KompilatoryDelphi i C++ Builder od 7 do 13. OpenAPI code-first wymaga Delphi XE7 lub nowszego.
EdycjeRodzina serwera REST jest dostarczana także wewnątrz sgcWebSockets od edycji Professional wzwyż, serwer OpenAPI od edycji Enterprise wzwyż, a klient OpenAPI od edycji Standard wzwyż.
LicencjonowanieProdukt samodzielny. Środowisko uruchomieniowe sgcWebSockets Core jest dołączone, a pełny kod źródłowy jest w zestawie.
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Twórz z sgcREST

Pobierz bezpłatną wersję próbną i uruchom swój pierwszy punkt końcowy REST albo wywołanie OpenAPI z Delphi lub C++ Builder.