sgcREST REST API, Delphi 原生支持。 内置 OpenAPI。

两大任务,七个类。TsgcHTTPRESTServer 发布带有 CORS、/metrics 和 /health、多租户和用户存储的 REST API。OpenAPI 引擎既可以直接根据 OpenAPI 3.x 契约提供 API 服务,也可以从您的 Delphi 类生成该契约,而 TsgcOpenAPI_Client 则可以调用任何以 OpenAPI 描述的 API。已包含 sgcWebSockets Core 运行时。

几行代码发布您的第一个端点 →
  • Delphi 7 至 13
  • C++ Builder
  • OpenAPI 3.x
  • CORS
  • /metrics 和 /health
  • 多租户
  • 完整源代码
  • 4组件面板中的组件:REST 服务器、统计、租户和用户
  • 7类总数:REST 服务器家族、OpenAPI 引擎和客户端
  • 4客户端认证方案:Basic、Bearer 令牌、OAuth2 和 JWT
  • 2内置端点:/metrics 和 /health,均需主动启用
  • 100%每个许可证均含源代码
看它运行

两分钟了解 sgcREST。

一段带旁白和字幕的 REST 服务器演示:您已经熟悉的 HTTP 服务器,外加 REST API 最终总会需要的四项能力。点击播放前不会下载任何内容。

sgcREST 快速入门

用 Delphi 构建带有 CORS、实时统计、租户和用户的 REST API 服务器。

  1. 全部继承TsgcHTTPRESTServer 派生自 TsgcHTTPServer:Port、TLS、Authentication、会话、压缩、线程池、防火墙和速率限制器全部继承。
  2. 一切都需主动启用CORS 默认关闭,ServerStats 和 Tenancy 未赋值。升级之后不会有任何功能自行开启。
  3. CORS列出您允许的来源、方法和标头,服务器会替您应答 OPTIONS 预检请求。
  4. 指标与健康检查赋值 TsgcHTTPServerStats 即可获得 /metrics 和 /health,两者都位于服务器的认证关卡之后。
  5. 多租户每个请求都会根据主机、路径、标头或 JWT 声明映射到一个租户。处理程序只需读取 Tenant。
  6. 现成的用户存储账户、加盐的密码哈希和角色。内置的 Basic 关卡会据此校验每一份凭据。
包含什么

四个面板组件,三个纯代码类。

REST 服务器及其三个配套组件是 SGC REST 面板页上的非可视组件。OpenAPI 服务器引擎和 OpenAPI 客户端位于 sgcHTTP_OpenAPI_* 单元中:创建一个实例,配置后直接调用其方法。

REST 服务器 · 一个服务器,三个配套组件

查看 →
  • TsgcHTTPRESTServer
  • TsgcHTTPServerStats
  • TsgcHTTPServer_Tenancy
  • TsgcHTTPServer_Users
  • CORSOptions
  • ServerStats
  • Tenancy
  • Tenant

TsgcHTTPRESTServer 扩展了标准的 TsgcHTTPServer,通过 CORSOptions提供 CORS 处理,并带有两个用于可选配套组件的属性。TsgcHTTPServerStats 按状态类别统计每个请求,跟踪延迟的最小值、平均值和最大值,并提供 Prometheus 格式的 /metrics 端点以及 JSON 格式的 /health 端点,并通过 GetEndpointStats 提供按路由划分的明细。TsgcHTTPServer_Tenancy 根据主机名、路径段、请求标头或 JWT 声明解析调用方的租户,Tenant 则读取当前所处理请求的解析结果。TsgcHTTPServer_Users 是独立的账户存储,包含账户、加盐的密码哈希和角色。

OpenAPI 服务器 · 规范优先或代码优先

查看 →
  • TsgcOpenAPIRouteTable
  • TsgcOpenAPIServerContext
  • TsgcOpenAPIServerHandler
  • TsgcOpenAPIJSONValidator
  • TsgcOpenAPICodeFirstScanner
  • RespondJSON

加载 OpenAPI 3.0 或 3.1 文档,路由表即根据其 paths 部分构建。匹配的请求以 TsgcOpenAPIServerContext的形式到达,带有类型化的路径和查询参数、正文辅助方法以及 RespondJSON/RespondError,验证器会依据规范声明的 JSON Schema 检查正文、查询和路径参数。代码优先则改变了事实来源:为普通 Delphi 类添加标注,扫描器就会生成规范。

OpenAPI 客户端 · 任何已描述的 API

查看 →
  • TsgcOpenAPI_Client
  • SetBaseURL
  • HTTP_REQUEST
  • HTTP_REQUEST_Async
  • Authentication
  • OnBeforeRequest
  • OnUpload
  • OnDownload

适用于 OpenAPI 文档所描述的任何端点的通用运行时客户端,也是生成的 SDK 所基于的基类。Authentication 涵盖 Basic 认证和 Bearer 令牌,以及通用的 OAuth2 和 JWT,HTTP_REQUEST 负责承载调用,OnBeforeRequest、OnUpload 和 OnDownload 负责跟踪。

查看所有组件和属性

工作原理

一个服务器,可组合的配套组件。

七个类按职责划分得很清晰。REST 服务器承载 HTTP 流量,三个配套组件补充生产环境 API 所需的能力,OpenAPI 引擎则将手写或生成的规范变成可用的路由表。

在 TsgcHTTPServer 之上扩展

TsgcHTTPRESTServer 继承了每个 sgcWebSockets 版本都附带的普通 HTTP 服务器的绑定、TLS 和 HTTP/2 处理,并增加了 CORS 和配套组件属性,因此 REST API 无需另外的框架即可获得指标、健康检查和多租户。

配套组件,而非内置

统计、租户和用户是各自独立的组件。按每个 API 的需要挂接,其余的不用。已挂接但未配置的配套组件,服务器检查它不会产生任何开销。

规范优先与代码优先,同一张路由表

无论 OpenAPI 文档来自您加载的文件,还是来自 TsgcOpenAPICodeFirstScanner.GenerateSpec 对带特性标注的类的扫描,同一张路由表和请求上下文都能为其服务。

规范所需的每个回调

验证和认证事件会收到解析后的 TsgcOpenAPIServerContext,以及 PathParams、QueryParams 和 RespondJSON,以及 OnException 会在处理程序错误到达网络之前将其捕获,因此一次调用为什么被接受或被拒绝,没有任何细节对您隐藏。

六个平台,无需附加组件

全部七个类都运行在 RAD Studio 自带的标准 Indy 库之上:Windows Win32 和 Win64、Linux64、macOS、iOS 和 Android。支持 Delphi 7 到 RAD Studio 13 以及 C++ Builder。

Core 运行时已包含在内

sgcWebSockets Core 运行时提供 REST 服务器和所有 OpenAPI 类所运行的 HTTP/TLS 栈,以及序列化每个请求和响应的 JSON 层。其完整源代码与其他部分一样包含在软件包中。

快速入门

发布端点,发布契约,或者调用端点。

REST 服务器直接把请求交给您。OpenAPI 服务器交给您的是已验证、已匹配的操作。OpenAPI 客户端则调用别人的端点。三者在 Delphi 7 到 13 和 C++ Builder 中的编译方式完全相同。

uses
  sgcHTTP_REST_Server, sgcHTTP_REST_Server_Stats;
var
  RESTServer: TsgcHTTPRESTServer;
  Stats: TsgcHTTPServerStats;
begin
  // REST server: CORS, health/metrics and tenancy in one component
  RESTServer := TsgcHTTPRESTServer.Create(nil);
  Stats := TsgcHTTPServerStats.Create(nil);
  Stats.Endpoints.Health.Enabled := True;

  RESTServer.Port := 8080;
  RESTServer.CORSOptions.Enabled := True;
  RESTServer.CORSOptions.AllowOrigins := 'https://app.example.com';
  RESTServer.ServerStats := Stats;
  RESTServer.OnCommandGet := RESTServerCommandGet;
  RESTServer.Active := True;
end;

procedure TForm1.RESTServerCommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
  AResponseInfo.ContentText := '{"status":"ok"}';
end;
uses
  sgcWebSocket_Server_API_OpenAPI, sgcHTTP_Server;
var
  OpenAPIServer: TsgcWSAPIServer_OpenAPI;
begin
  // OpenAPI server: load the contract, dispatch by operation id
  OpenAPIServer := TsgcWSAPIServer_OpenAPI.Create(nil);
  OpenAPIServer.Server := sgcHTTPServer1;
  OpenAPIServer.LoadFromFile('petstore.json');
  OpenAPIServer.OnRequest := OpenAPIServerRequest;

  sgcHTTPServer1.Port := 8080;
  sgcHTTPServer1.Active := True;
end;

procedure TForm1.OpenAPIServerRequest(Sender: TObject;
  const aOperationId: string; const aContext: TsgcOpenAPIServerContext;
  var Handled: Boolean);
begin
  if aOperationId = 'getPetById' then
  begin
    aContext.RespondJSON(200,
      '{"id":"' + aContext.PathParamAsString('petId') + '","name":"Rex"}');
    Handled := True;
  end;
end;
uses
  sgcHTTP_OpenAPI_Client;
var
  APIClient: TsgcOpenAPI_Client;
  Request: TsgcOpenAPIRequest;
  Response: TsgcOpenAPIResponse;
begin
  // OpenAPI client: call any OpenAPI-described API with basic auth
  APIClient := TsgcOpenAPI_Client.Create(nil);
  APIClient.SetBaseURL('https://api.example.com');
  APIClient.Authentication.Basic.Enabled := True;
  APIClient.Authentication.Basic.Username := 'apiuser';
  APIClient.Authentication.Basic.Password := '...';

  Request := TsgcOpenAPIRequest.Create;
  Response := TsgcOpenAPIResponse.Create;
  APIClient.HTTP_REQUEST(Request, Response);
end;
  1. CORS,服务器替您应答启用 CORSOptions,列出您允许的来源、方法和标头,服务器就会应答 OPTIONS 预检请求。它同时适用于您的处理程序和 DocumentRoot 提供的文件。
  2. 一次赋值即可统计将 TsgcHTTPServerStats 赋给 ServerStats,即可获得 /metrics 和 /health。不赋值则完全不保留任何计数器。
  3. 在您的代码运行之前完成租户识别赋值 TsgcHTTPServer_Tenancy 后,每个请求都会先被映射到一个租户。您的处理程序只需读取 Tenant。
  4. 无需处理程序的用户将 TsgcHTTPServer_Users 赋给 Authentication.Users,内置的 Basic 关卡会自行校验每一份凭据。
sgcREST 快速入门:TsgcHTTPServerStats 启用 Metrics 和 Health 端点,GET /metrics 返回请求计数器,GET /health 返回 JSON 状态。
三行配置,之后 GET /metrics 和 GET /health 自行应答。

完整功能矩阵

购买之前

有两件事值得先了解。

sgcREST 需要您做什么,又不需要您做什么。两个答案都很简短,而且都写在这个页面上,而不是藏在小字条款里。

publish a REST API
TsgcHTTPRESTServer        CORS, ServerStats, Tenancy
TsgcHTTPServerStats       /metrics and /health
TsgcHTTPServer_Tenancy    host, path, header, JWT claim
TsgcHTTPServer_Users      accounts, hashes, roles

publish from an OpenAPI 3.x contract
route table + context     spec-first, Delphi 7 to 13
code-first scanner        attributed class, XE7 and up

consume an API
TsgcOpenAPI_Client        any OpenAPI-described API

TsgcHTTPRESTServer is a TsgcHTTPServer
  descendant, so it publishes from the Port,
  TLS and Authentication you already use.

sgcREST 是自包含的

独立产品,内置 sgcWebSockets Core 运行时:REST 服务器和所有 OpenAPI 类所运行的 HTTP/TLS 服务器与客户端栈,以及序列化每个请求和响应的 JSON 层。一个安装程序,sgcREST 即可运行在 RAD Studio 自带的标准 Indy 库之上。

代码优先 OpenAPI 需要 Delphi XE7 或更高版本

从带特性标注的 Delphi 类生成规范依赖于 Delphi XE7 引入的 RTTI,因此 TsgcOpenAPICodeFirstScanner 和 TsgcOpenAPICodeFirstDispatcher 从 XE7 起才能编译。REST 服务器、其配套组件和规范优先引擎可在所有受支持的编译器上运行,即 Delphi 7 到 13。

中间没有任何黑盒

sgcREST 实现的是您的契约所描述的 REST 和 OpenAPI 接口,而不是对一个您无法掌控的代码生成器的封装。请求、验证和分发都是一等的方法和事件,并且每份许可证都附带完整源代码,因此一切都可以在您自己的调试器中单步跟踪。

sgcWebSockets 的一部分

sgcWebSockets 的单独软件包,独立许可证。

sgcREST 将 sgcWebSockets 的 REST 和 OpenAPI 类打包为一个软件包。每份许可证都包含全部七个类、sgcWebSockets Core 运行时、完整源代码、免版税分发以及 1 年更新。

Single

1 个开发者许可证。同一时间可在一台机器上使用。

€249

Team

2 个开发者许可证。同一时间可在两台机器上使用。

€399

Site

开发者数量不限。覆盖公司所有机器。

€649

续订可享 50% 至 70% 折扣。已在使用 sgcWebSockets?REST 服务器包含在 Professional 及更高版本中,Enterprise 版本还包含 OpenAPI 服务器,因此您现有的版本可能已经涵盖您的需求,而 All-Access 套餐 则包含全部内容。试用版安装程序即 sgcWebSockets All-Access 试用版,因此今天就可以评估全部七个类。

查看价格并订购
Testimonials

开发者怎么说

受到全球各地 Delphi、C++ Builder、Lazarus 和 .NET 开发者的信赖。

你们的 sgcWebSockets 库非常实用,而且易于设置。请继续保持!
Simone Moretti Delphi 开发者
sgcWebSockets 非常出色,你们的支持也是最棒的!
Christian Meyer 创始人兼首席技术官
非常感谢你们的帮助和支持,我很喜欢你们的组件。
Mark Steinfeld CTO

REST API、OpenAPI 契约、原生代码。

一个带有 CORS、统计、租户和用户的 REST 服务器,一个既可规范优先也可代码优先的 OpenAPI 服务器,以及一个适用于任何已描述 API 的 OpenAPI 客户端,内置 sgcWebSockets Core 运行时,并附带完整源代码。

eSeGeCe 的更多产品

eSeGeCe 的其他产品

sgcREST 是 eSeGeCe 面向 Delphi、C++ Builder 和 .NET 的组件库之一。它们遵循相同的约定,附带完整源代码,部署无需支付版税。

sgcWebSockets

面向 Delphi、C++ Builder、Lazarus 和 .NET 的 WebSocket、HTTP/2、MQTT、AMQP、WebRTC、AI 以及 30 多种 API 集成。Core 运行时就在这里,其 Enterprise 版本还包含 OpenAPI 服务器。

sgcHTTP

面向 Delphi 和 C++ Builder 的 HTTP 服务器、HTTP/2 客户端、gRPC 客户端以及 Google Cloud Pub/Sub、Calendar 和 FCM 客户端。独立产品,随附 sgcWebSockets Core 运行时。

sgcAuth

OAuth2 和 JWT 客户端组件,外加 WebAuthn 通行密钥登录,与 REST API 的用户存储天然搭配。

sgcAI

面向 Delphi 和 C++ Builder 的 AI、LLM 和 MCP 组件。一个组件即可对接七家 LLM 提供商,另有 MCP、嵌入和语音。

sgcMQ

面向 Delphi 和 C++ Builder 的 MQTT、AMQP 0.9.1 和 1.0、Apache Kafka 与 STOMP 客户端组件。独立产品,随附 sgcWebSockets Core 运行时。

sgcSocial

面向 Delphi 和 C++ Builder 的 Telegram 和 WhatsApp Business 客户端组件。独立产品,随附 sgcWebSockets Core 运行时。

sgcOpenAPI

OpenAPI 3.x 解析器、原生 Pascal SDK 生成器以及 1,195 多个预构建云 SDK,用于离线代码生成,而不是运行时客户端。

sgcHTML

面向 Delphi、C++ Builder 和 .NET 的服务器端 HTML 和界面组件,基于 Bootstrap 5 和 htmx。

sgcQUIC

原始 QUIC 传输,以及 HTTP/3 客户端和服务器,并支持 WebTransport。作为 sgcWebSockets Enterprise 的附加组件。

sgcSign

文档使用 XAdES、PAdES、CAdES 和 ASiC,代码使用 Authenticode、ClickOnce、NuGet 和 VSIX。

sgcPDF

使用纯 Object Pascal 创建、编辑、查看、签名、涂黑并验证 PDF 文件,无需部署任何 DLL。单独许可销售。

sgcBiometrics

面向 Delphi 和 C++ Builder 的 Windows Hello、指纹传感器和 Windows 生物特征框架。

sgcIndy

更新后的 Indy TCP/IP 组件,为 Delphi 7 到 13 提供现代 TLS、IPv6 和 HTTP/2。

博客最新动态

查看全部文章 →

您正在浏览 eSeGeCe 的 REST 与 OpenAPI 视角。

换个角度看看 →
30 天退款保证不满意?可在购买后 30 天内申请全额退款。 查看退款政策