sgcREST Özellik Matrisi: REST Sunucusu & OpenAPI | eSeGeCe

sgcREST Özellik Matrisi

sgcREST'in yaptığı her şey; REST sunucusu ve yardımcıları, OpenAPI sunucu motoru ve OpenAPI istemci ailesi üzerinden eşlenmiş. Her yetenek Delphi ve C++ Builder'da aynı şekilde çalışır ve her lisans tam kaynak koduyla gelir. Bu lansman için bileşen alt sayfaları henüz yayımlanmadı, aşağıdaki her giriş bu sayfada kendi kendine yeterlidir.

REST Sunucusu

CORS, istatistikler, kiracılık & kullanıcılar

OpenAPI Sunucusu

Spesifikasyon öncelikli & kod öncelikli

OpenAPI İstemcisi

OpenAPI ile tanımlanmış herhangi bir API'yi tüketin

Standartlar & Platformlar

Delphi 7'den 13'e, C++ Builder

sgcREST kendi kendine yeterlidir. sgcWebSockets Core çalışma zamanı pakete dahil olarak gelir, bu yüzden bir eklenti değildir, ve RAD Studio ile birlikte gelen standart Indy kitaplığı üzerinde çalışır.

Kod öncelikli OpenAPI, Delphi XE7 veya sonrasını gerektirir. Öznitelikli bir Delphi sınıfından bir spesifikasyon üretmek, XE7 ile gelen RTTI'ye dayanır. REST sunucusu, yardımcıları ve spesifikasyon öncelikli OpenAPI motoru, Delphi 7'den 13'e çalışır.

Yedi Sınıf, Üç Aile

SGC REST palet sayfasında dört bileşen ve üç kod-yalnızca OpenAPI sunucu ve istemci sınıfı, sgcHTTP_REST_Server* ve sgcHTTP_OpenAPI_* birimlerinde tanımlanmıştır.

BileşenSınıfPalette mi?Açıklama
REST SunucusuTsgcHTTPRESTServerEvetTsgcHTTPServer üzerine kurulu REST API sunucusu; CORS işleme ve takılabilir istatistik/kiracılık yardımcılarıyla.
REST Sunucu İstatistikleriTsgcHTTPServerStatsEvetİstek sayaçları, gecikme izleme, Prometheus /metrics ve JSON /health.
REST Sunucu KiracılığıTsgcHTTPServer_TenancyEvetAna bilgisayar, yol, başlık veya JWT talebine göre çoklu kiracı çözümlemesi.
REST Sunucu KullanıcılarıTsgcHTTPServer_UsersEvetYerel hesap deposu: kullanıcı ekleme, doğrulama, karma oluşturma, rol etiketleme ve kalıcı saklama.
OpenAPI Sunucusu, Spesifikasyon ÖncelikliTsgcOpenAPIServerHandlerHayır, kod-yalnızcaYüklenmiş bir OpenAPI 3.0/3.1 belgesinden, istek doğrulamasıyla birlikte bir API sunar.
OpenAPI Sunucusu, Kod ÖncelikliTsgcOpenAPICodeFirstScannerHayır, kod-yalnızcaRTTI ile öznitelikli bir Delphi sınıfından OpenAPI spesifikasyonu üretir. Delphi XE7+ gerektirir.
OpenAPI İstemcisiTsgcOpenAPI_ClientHayır, kod-yalnızcaOpenAPI ile tanımlanmış herhangi bir uç nokta için genel amaçlı çalışma zamanı istemcisi.

CORS, İstatistikler, Kiracılık ve Bir Kullanıcı Deposu

TsgcHTTPRESTServer, bir TsgcHTTPServer türevidir, bu yüzden her sgc HTTP sunucusunun paylaştığı aynı bağlamalar ve TLS işlemesiyle başlar ve üzerine bir REST API'sinin alışılmış ekstralarını ekler.

YetenekAPINotlar
CORSCORSOptions (Enabled, AllowOrigins, AllowHeaders, AllowMethods)Varsayılan olarak kapalı. Etkinleştirildikten sonra ön kontrol OPTIONS istekleri otomatik olarak yanıtlanır.
İstatistik yardımcısıServerStats: TsgcHTTPServerStatsBir istatistik bileşeni ekleyin, her istek rota işleyicilerine dokunmadan sayılır ve zamanlanır.
Kiracılık yardımcısıTenancy: TsgcHTTPServer_Tenancy, TenantÇağıranın kiracısını çözmek için bir kiracılık bileşeni ekleyin; Tenant geçerli istek için sonucu okur.
İstek sayaçlarıTotalRequests, Status1xx ile Status5xx arasıTsgcHTTPServerStats üzerinde. Yanıtlar gönderildikçe durum sınıfına göre sayılır.
GecikmeLatencyMinMs, LatencyAvgMs, LatencyMaxMsTsgcHTTPServerStats üzerinde istek başına izlenir, Reset ile sıfırlanır.
Metrik uç noktasıGetMetricsText, IsMetricsRequestPrometheus metin sunum biçimi 0.0.4, /metrics üzerinde sunulur.
Sağlık uç noktasıGetHealthJSON, IsHealthRequest/health üzerinde sunulan JSON sağlık yükü, UptimeSeconds ve ActiveConnections içerir.
Uç nokta başına istatistikGetEndpointStats, EndpointsBir rapor ya da yönetici konsolu için, uç nokta başına bir yol/sayı çifti.
Kiracı çözümlemesiResolution, ResolveTenantTsgcHTTPServer_Tenancy üzerinde. Ana bilgisayar soneki, yol segmenti, başlık veya JWT talebine göre çözer.
Kiracı kaynaklarıHostSuffix, PathSegmentIndex, HeaderName, ClaimName, DefaultTenantYapılandırılan Resolution modu için okunan kaynak ve hiçbir sonuç vermediğinde kullanılan yedek.
Özel çözümlemeOnResolveTenantYerleşik çözümleme mantığını geçersiz kılın veya genişletin.
Kullanıcı hesaplarıAddUser, DeleteUser, FindUser, ValidateCredentials, SetPassword, EnableUser, UserExistsTsgcHTTPServer_Users üzerinde. Tuzlanmış, karması alınmış kimlik bilgileri, asla düz biçimde döndürülmez.
RollerAddRole, RemoveRole, UserHasRole, GetUserRolesHesap başına serbest biçimli rol etiketleri, bir rota işleyicisinden denetlenir.
NumaralandırmaCount, GetUserCount, GetUserByIndex, GetUsernamesBir rapor ya da yönetici konsolu için salt okunur görünümler; parola karması ve tuzu asla dahil edilmez.
KalıcılıkLoadUsers, SaveUsers, SaveToFile, LoadFromFile, ExportUsers, ImportUsersStorage.EncryptAtRest depoyu şifreler; OnLoadUsers/OnSaveUsers özel bir arka uçla değiştirir.
OlaylarOnStats, OnResolveTenant, OnValidateCredentials, OnFindUser, OnExceptionYerleşik mantığın kapsamadığı durumlar için yardımcı başına bir olay.

Spesifikasyon Öncelikli Yönlendirme, Kod Öncelikli Üretim

Her iki yaklaşım da aynı rota tablosunu ve istek bağlamını besler; yalnızca OpenAPI belgesinin kaynağı farklıdır.

YetenekAPINotlar
Rota tablosuTsgcOpenAPIRouteTable (Add, Match)Bir spesifikasyonun paths bölümünden oluşturulur; bir fiil ve yolu bir operationId'ye eşler.
İstek bağlamıTsgcOpenAPIServerContext (Request, Response, PathParams, QueryParams)Eşleşen istek başına bir örnek, istek bittiğinde serbest bırakılır.
Tiplenmiş parametrelerPathParamAsString, PathParamAsInteger, QueryParamAsString, QueryParamAsInteger, QueryParamAsBooleanBir yol veya sorgu değerini tek çağrıda okur ve dönüştürür.
Gövde erişimiBodyAsString, BodyAsJSON, HeaderValueİstek gövdesini bir kez ayrıştırır ve sonucu önbelleğe alır.
YanıtlamaRespondJSON, RespondErrorBir durum koduyla JSON gövdesi yazar veya yapılandırılmış bir hata yükü döner.
İstek yaşam döngüsüBeforeHandle, AfterHandle, HandleExceptionTsgcOpenAPIServerHandler üzerinde. Günlükleme, yetkilendirme kontrolleri veya özel hata eşlemesi eklemek için geçersiz kılın.
DoğrulamaTsgcOpenAPIJSONValidatorİstek gövdelerini, sorgu ve yol parametrelerini spesifikasyonun bildirdiği JSON Şemalarına göre denetler.
Spesifikasyon üretimiGenerateSpec, Title, Description, Version, BasePathTsgcOpenAPICodeFirstScanner üzerinde. Öznitelikli bir sınıfın RTTI'sinden bir OpenAPI 3.0 belgesi üretir.
Sözleşme özniteliklerisgcServiceContract, sgcRoute, sgcSummary, sgcDescription, sgcTag, sgcResponseÜretilen spesifikasyonu dolduran sınıf ve metot düzeyi öznitelikler.
Fiil özniteliklerisgcHttpGet, sgcHttpPost, sgcHttpPut, sgcHttpDelete, sgcHttpPatch, sgcHttpHead, sgcHttpOptionsİşaretlenmiş bir metodun yanıtladığı HTTP fiilini bildirir.
Parametre bağlamasgcFromPath, sgcFromQuery, sgcFromHeader, sgcFromBody, sgcRequiredHer metot parametresinin nereden okunacağını bildirir.
GönderimTsgcOpenAPICodeFirstDispatcher (RegisterController, DispatchOperation, IsRegistered)Bir operationId için kayıtlı işaretlenmiş metodu doğrudan çağırır, elle bir if zinciri gerekmez.
BağımlılıkDelphi XE7 veya sonrasıKod öncelikli tarama ve gönderim, XE7'den önce bulunmayan System.Rtti'ye dayanır. Spesifikasyon öncelikli yaklaşımın böyle bir gereksinimi yoktur.

Bir Çalışma Zamanı İstemcisi, Herhangi Bir OpenAPI API'si

OpenAPI ile tanımlanmış herhangi bir uç nokta için genel bir istemci; Basic kimlik doğrulama, bearer token, genel OAuth2 ve genel JWT yerleşik olarak gelir.

YetenekAPINotlar
Temel çağrıHTTP_REQUESTTsgcOpenAPI_Client üzerinde. Herhangi bir uç noktaya bir TsgcOpenAPIRequest/TsgcOpenAPIResponse çiftini taşır.
Temel URLSetBaseURL, GetBaseURLBir istekteki her göreli yolun çözüldüğü uç nokta.
Genel kimlik doğrulamaAuthentication (Basic, Token, OAuth2, JWT)Basic kimlik doğrulama ve bearer token'ların yanı sıra genel OAuth2 ve JWT akışları.
TaşımaTLSOptions, ProxyOptions, EncodeBodyAsUTF8sgc HTTP yığınının geri kalanıyla paylaşılan standart TLS ve proxy yapılandırması.
İlerleme & günlüklemeOnUpload, OnDownload, Log, LogFileNameBüyük istek/yanıt gövdelerini izleyin ve isteğe bağlı olarak her çağrıyı bir dosyaya günlükleyin.
İstek kancasıOnBeforeRequestBir isteği gönderilmeden önce inceleyin veya değiştirin.
TLS kancalarıOnSSLVerifyPeer, OnSSLGetHandler, OnSSLAfterCreateHandlerSertifika doğrulama ve işleyici özelleştirmesi, sgc HTTP yığınının geri kalanıyla paylaşılır.

API'ler, Derleyiciler ve Hedefler

Hat üzerinde kamuya açık standartlar ve desteklenen her derleyicide aynı kaynak kodu.

AlanAyrıntı
OpenAPIHem sunucunun spesifikasyon öncelikli yönlendirmesi hem de istek doğrulamasının denetlediği JSON Şemaları için OpenAPI 3.0 ve 3.1.
İstemci kimlik doğrulamaHTTP Basic kimlik doğrulama ve bearer token'lar, ayrıca genel OAuth2 ve JWT.
Metrikler/metrics üzerinde Prometheus metin sunum biçimi 0.0.4.
PlatformlarYedi sınıfın tümü için Windows Win32, Windows Win64, Linux64, macOS, iOS ve Android.
BağımlılıkPakete dahil sgcWebSockets Core çalışma zamanının ötesinde yok. Yedi sınıfın hiçbiri için ek bir eklenti gerekmez.
DerleyicilerDelphi ve C++ Builder 7'den 13'e. Kod öncelikli OpenAPI, Delphi XE7 veya sonrasını gerektirir.
SürümlerREST sunucu ailesi ayrıca sgcWebSockets içinde Professional sürümünden itibaren, OpenAPI sunucusu Enterprise'dan itibaren ve OpenAPI istemcisi Standard'dan itibaren gelir.
LisanslamaBağımsız. sgcWebSockets Core çalışma zamanı pakete dahildir ve tam kaynak kodu içerilir.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

sgcREST ile Geliştirin

Ücretsiz deneme sürümünü indirin ve Delphi ya da C++ Builder'dan ilk REST uç noktanızı ya da OpenAPI çağrınızı oluşturun.