OpenAPI Sunucusu
Bir OpenAPI 3 REST API'sini doğrudan bir Delphi HTTP sunucusu içinde barındırın. Spec-first veya code-first, otomatik Swagger UI, istek doğrulama ve CORS ile — spesifikasyon tek doğruluk kaynağı olur.
Bir OpenAPI 3 REST API'sini doğrudan bir Delphi HTTP sunucusu içinde barındırın. Spec-first veya code-first, otomatik Swagger UI, istek doğrulama ve CORS ile — spesifikasyon tek doğruluk kaynağı olur.
TsgcWebSocketHTTPServer'a takılan, bir OpenAPI 3 spesifikasyonu yükleyen (veya açıklamalı Pascal sınıflarından bir tane oluşturan) ve gelen istekleri operationId'ye göre yönlendiren, sorunsuz entegre olan bir API sunucusu.
TsgcWSAPIServer_OpenAPI
Windows, macOS, Linux, iOS, Android
Enterprise
Bileşeni oluşturun, bir spesifikasyon yükleyin (veya oluşturun), bir HTTP sunucusuna ekleyin. Bileşen, rotaları eşleştirir, girdileri doğrular ve Swagger UI'yi otomatik olarak /docs adresinde sunar.
uses
sgcWebSocket, sgcWebSocket_Server_API_OpenAPI,
sgcHTTP_OpenAPI_Server;
var
Server: TsgcWebSocketHTTPServer;
OpenAPI: TsgcWSAPIServer_OpenAPI;
begin
Server := TsgcWebSocketHTTPServer.Create(nil);
Server.Port := 8080;
OpenAPI := TsgcWSAPIServer_OpenAPI.Create(nil);
OpenAPI.OnRequest := HandleRequest;
OpenAPI.OpenAPIOptions.Endpoint.ServeSwaggerUI := True;
OpenAPI.OpenAPIOptions.Validation.ValidateRequest := True;
OpenAPI.OpenAPIOptions.CORS.Enabled := True;
OpenAPI.LoadFromFile('petstore.json');
OpenAPI.Server := Server;
Server.Active := True;
// Swagger UI: http://localhost:8080/docs
// Ham spesifikasyon: http://localhost:8080/openapi.json
end;
procedure THost.HandleRequest(Sender: TObject;
const aOperationId: string;
const aContext: TsgcOpenAPIServerContext;
var Handled: Boolean);
begin
Handled := True;
if aOperationId = 'getPetById' then
aContext.RespondJSON(200, PetAsJSON(aContext.PathParamAsInteger('petId')))
else
Handled := False;
end;
uses
sgcWebSocket_Server_API_OpenAPI,
sgcHTTP_OpenAPI_Server_CodeFirst;
type
[sgcServiceContract('Task Manager', '', '1.0.0')]
[sgcRoute('/api/v1')]
TTaskService = class
public
[sgcHttpGet] [sgcRoute('/tasks/{taskId}')]
[sgcSummary('Get a task by ID')]
[sgcResponse(200, 'The requested task')]
[sgcResponse(404, 'Task not found')]
procedure GetTask([sgcFromPath][sgcRequired] const taskId: Integer); virtual;
end;
// Spesifikasyonu RTTI'den oluştur ve bileşene ver:
var
Scanner: TsgcOpenAPICodeFirstScanner;
begin
Scanner := TsgcOpenAPICodeFirstScanner.Create;
try
OpenAPI.LoadFromString(Scanner.GenerateSpec(TTaskService));
finally
Scanner.Free;
end;
OpenAPI.Server := Server;
Server.Active := True;
end;
Bir API tanımlamanın iki yolu, dört pipeline kancası, spesifikasyona karşı doğrulama ve bileşenin kendisi tarafından sunulan bir Swagger UI sayfası.
Mevcut bir OpenAPI 3 belgesini LoadFromFile veya LoadFromString ile yükleyin. Rotalar, parametreler ve şemalar ayrıştırılır ve sunucunuzun uyması gereken sözleşme haline gelir — JSON'u değiştirin, yeniden başlatın, tamam.
Pascal sınıflarını sgcHttpGet / sgcRoute / sgcFromPath / sgcResponse öznitelikleriyle açıklayın; TsgcOpenAPICodeFirstScanner RTTI'yi tarar ve spesifikasyonu çalışma zamanında üretir — elle JSON yazmaya gerek yok.
OpenAPIOptions.Endpoint.ServeSwaggerUI seçeneğini açın; sunucu, /openapi.json ile beslenen etkileşimli bir dene-test-et sayfasını /docs adresinde yayınlar — ayrı bir belge derlemesi yok, statik dışa aktarma yok.
Gövdeyi, sorgu dizesini, yol parametrelerini ve zorunlu alanları spesifikasyondaki şemalara karşı doğrular. Başarısızlık durumunda OnValidationError size tam hata listesini ve reddetmek veya devam etmek için bir Continue bayrağı verir.
OpenAPIOptions.CORS.Enabled := True ayarlayın; sunucu, AllowOrigins / AllowHeaders / AllowMethods politikanızı uygulayarak her rotada preflight OPTIONS isteklerine yanıt verir.
TsgcOpenAPIServerContext; PathParamAs*, QueryParamAs*, HeaderValue, BodyAsString / BodyAsJSON ile birlikte RespondJSON ve RFC 7807 tarzı bir RespondError sunar.
OnBeforeRequest, OnAfterRequest, OnAuthenticate ve OnException ana OnRequest işleyicisini sarmalar — alt sınıf oluşturmadan kısa devre yapın, günlüğe kaydedin, kimlik doğrulayın veya istisnaları yeniden eşleyin.
OpenAPIOptions.Endpoint.BasePath, her rotaya ve yerleşik /openapi.json ve /docs uç noktalarına bir ön ek ekler; böylece API, /api/v1 veya istediğiniz herhangi bir ad alanının arkasında bulunabilir.
sgcRequired, sgcMinLength, sgcMaxLength, sgcRange ve sgcPattern eşleşen şema kısıtlamalarını üretir; böylece aynı kurallar oluşturulan spesifikasyonda görünür ve çalışma zamanında uygulanır.
Bu bileşenin uyguladığı protokoller ve formatlar için yetkili kaynaklar.
Bileşen referansına doğrudan bağlanın, çalışmaya hazır demo projelerini alın ve denemeyi indirin.
| Çevrimiçi Yardım — OpenAPI Sunucusu Bu bileşen için tam özellik, metot ve olay referansı. | Aç | |
| Demo Projeleri — Demos\23.OpenAPI Çalışmaya hazır iki örnek: spec-first (Petstore JSON) ve code-first (görev yöneticisi). sgcWebSockets paketinin içinde gelir — denemeyi aşağıdan indirin. | Aç | |
| Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz. | Aç |