sgcREST:面向 Delphi 和 C++ Builder 的 REST API 服务器与 OpenAPI 组件
独立产品 REST 服务器与 OpenAPI

sgcREST:面向 Delphi 和 C++ Builder 的 REST API 服务器与 OpenAPI 组件

两项任务,七个类。TsgcHTTPRESTServer 是一个带 CORS 处理的 REST API 服务器,并配有三个可挂载的配套组件:请求统计、多租户和本地用户存储。与之并列的是一个 OpenAPI 引擎,它既可以直接根据规范文档提供 API 服务,也可以从带特性标注的 Delphi 类生成该规范,而 TsgcOpenAPI_Client 则可以调用任何以 OpenAPI 描述的 API。sgcREST 是独立产品,内置了每个类所基于的 sgcWebSockets Core 运行时。

完整源代码
Delphi 7 到 13 和 C++ Builder
内置运行时 sgcWebSockets Core 所有类底层共用的 HTTP、TLS 和 JSON 运行时
REST 服务器 TsgcHTTPRESTServer
OpenAPI TsgcOpenAPI_Client
4 面板组件 REST 服务器、统计、租户与用户,面板上的一个页面
7 类总数 REST 服务器家族、OpenAPI 服务器引擎与 OpenAPI 客户端
4 客户端身份验证方案 内置 Basic 身份验证、Bearer 令牌、通用 OAuth2 和 JWT
100% 包含源代码 全部七个类及内置的 Core 运行时
12 个月更新 授权有效期内发布的每个版本

两件值得先了解的事

sgcREST 需要您准备什么,以及不需要什么。两个答案都很简短。

sgcREST 是自包含的

作为独立产品,已包含 sgcWebSockets Core 运行时:REST 服务器和每个 OpenAPI 类都运行于其上的 HTTP/TLS 服务器与客户端技术栈,以及为每个请求和响应做序列化的 JSON 层。一个 SKU,一个安装程序,sgcREST 运行在 RAD Studio 自带的标准 Indy 库之上。

每份授权都附带完整源代码,因此 REST 服务器、其配套组件以及 OpenAPI 引擎都可以在您自己的调试器中单步跟踪,而不会消失在二进制文件里。

一项版本要求

代码优先 OpenAPI 需要 Delphi XE7 及以上

从带特性标注的 Delphi 类生成 OpenAPI 规范,依赖于 Delphi XE7 才引入的 RTTI,因此 TsgcOpenAPICodeFirstScannerTsgcOpenAPICodeFirstDispatcher 需要 XE7 及以上版本才能编译。REST 服务器及其配套组件,以及根据您已有的 JSON 或 YAML 文档进行路由的规范优先 OpenAPI 引擎,则可以在每个受支持的编译器上运行,从 Delphi 7 到 13。

还没有可用的 OpenAPI 文档?先编写 Delphi 类,再让扫描器为您生成一份,这正是代码优先方式在 XE7 及以上版本中的用途所在。

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

REST 服务器及其三个配套组件是 SGC REST 面板页上的非可视化组件,声明在 sgcHTTP_REST_Server* 单元中。可以将 TsgcHTTPRESTServer 拖放到窗体上,也可以在代码中创建,然后按需挂载 ServerStatsTenancy。OpenAPI 服务器引擎和 OpenAPI 客户端类位于 sgcHTTP_OpenAPI_* 单元中,是纯代码类,没有可拖放到窗体上的内容:创建一个实例,配置它,然后直接调用其方法。

REST 服务器4 个组件

一个服务器,三个按需挂载的配套组件

TsgcHTTPRESTServer 在标准的 TsgcHTTPServer 基础上,通过 CORSOptions 增加了 CORS 处理,并提供两个可选配套组件属性:ServerStatsTenancyTsgcHTTPServerStats 按状态类统计每个请求,跟踪延迟的最小值、平均值和最大值,并提供 Prometheus 格式的 /metrics 端点和 JSON 格式的 /health 端点,GetEndpointStats 则给出按路由拆分的统计。TsgcHTTPServer_Tenancy 从主机名、路径片段、请求头或 JWT 声明中解析调用方所属的租户,服务器自身的 Tenant 属性会读取当前请求的解析结果。TsgcHTTPServer_Users 是第四个、独立存在的配套组件:一个本地账户存储,提供 AddUserValidateCredentials、角色标签和加盐密码哈希,并可选择静态加密,直接从路由处理程序中查询,而不是作为属性挂接到服务器上。

OpenAPI 服务器2 种定义 API 的方式

提供您已有的规范,或从代码生成一份

规范优先:加载 OpenAPI 3.0 或 3.1 文档,TsgcOpenAPIRouteTable 会根据其 paths 部分自动构建路由表。匹配到的请求以 TsgcOpenAPIServerContext 的形式到达,提供带类型的路径和查询参数访问、请求体辅助方法以及 RespondJSON/RespondErrorTsgcOpenAPIServerHandlerBeforeHandleAfterHandleHandleException 包裹每一次调用,TsgcOpenAPIJSONValidator 则根据规范声明的 JSON Schema 校验请求体、查询参数和路径参数。代码优先则反过来:用 sgcServiceContractsgcRoutesgcHttpGet/sgcHttpPost 以及 sgcFromPath/sgcFromQuery/sgcFromBody 特性标注一个普通的 Delphi 类,TsgcOpenAPICodeFirstScanner.GenerateSpec 便会直接根据其 RTTI 生成 OpenAPI 文档,无需手写 YAML。搭配 TsgcOpenAPICodeFirstDispatcher 使用,带特性标注的方法会针对每个操作被直接调用,无需手动编写分发链。代码优先需要 Delphi XE7 或更高版本。

TsgcOpenAPIServerHandler TsgcOpenAPICodeFirstScanner 代码优先需要 Delphi XE7+
OpenAPI 客户端1 个类

调用任何以 OpenAPI 描述的 API

TsgcOpenAPI_Client 是一个通用运行时客户端,适用于任何 OpenAPI 文档描述的端点:HTTP_REQUEST 承载调用,Authentication 涵盖 Basic 身份验证和 Bearer 令牌,另加通用的 OAuth2 和 JWT,OnBeforeRequestOnUploadOnDownload 对其进行跟踪。

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

这七个类按角色清晰地划分开来。REST 服务器承载 HTTP 流量,三个配套组件添加生产级 API 所需的能力,OpenAPI 引擎则把一份规范,无论是手写的还是生成的,变成可用的路由表。

REST 服务器是加了配套组件的 TsgcHTTPServer

TsgcHTTPRESTServer 继承了 sgcWebSockets 各版本都自带的普通 HTTP 服务器的绑定、TLS 和 HTTP/2 处理,并在此之上添加了 CORS 处理和两个可挂载的配套组件,因此 REST API 无需另外的框架就能获得指标、健康检查和多租户能力。

统计、租户和用户是配套组件,不是内置死板的功能

TsgcHTTPServerStatsTsgcHTTPServer_TenancyTsgcHTTPServer_Users 都是独立的组件。按某个 API 的实际需要挂载相应的组件,其余的留空,一个已挂载但未配置的配套组件不会给服务器带来任何检查开销。

规范优先和代码优先最终归入同一张路由表

无论 OpenAPI 文档来自您加载的文件,还是来自 TsgcOpenAPICodeFirstScanner.GenerateSpec 扫描带特性标注的类而来,两者都是 JSON,都由同一张路由表和同一个请求上下文提供服务。只有代码优先扫描器本身需要 Delphi XE7 或更高版本。

Core 运行时就在包里

作为独立产品,已包含 sgcWebSockets Core 运行时。它提供 REST 服务器和每个 OpenAPI 类所运行的 HTTP/TLS 技术栈,其完整源代码也和其他一切一样,是本产品包的一部分。

一个 REST 服务器和一个 OpenAPI 客户端,并肩使用

REST 服务器声明在 sgcHTTP_REST_Server 中,OpenAPI 客户端声明在 sgcHTTP_OpenAPI_Client 中。同一份代码可在 Delphi 7 到 13 以及 C++ Builder 中编译。

uses
  sgcHTTP_REST_Server, sgcHTTP_OpenAPI_Client;

var
  RESTServer: TsgcHTTPRESTServer;
  APIClient: TsgcOpenAPI_Client;
  Request: TsgcOpenAPIRequest;
  Response: TsgcOpenAPIResponse;
begin
  // REST 服务器:开启 CORS,接好统计与健康检查/指标
  RESTServer := TsgcHTTPRESTServer.Create(nil);
  RESTServer.Bindings.Add.Port := 8080;
  RESTServer.CORSOptions.Enabled := True;
  RESTServer.ServerStats := HTTPServerStats1;
  RESTServer.Active := True;

  // OpenAPI 客户端:使用 Basic 身份验证调用任何以 OpenAPI 描述的 API
  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;
// include: sgcHTTP_REST_Server.hpp, sgcHTTP_OpenAPI_Client.hpp

// REST 服务器:开启 CORS,接好统计与健康检查/指标
TsgcHTTPRESTServer *RESTServer = new TsgcHTTPRESTServer(this);
RESTServer->Bindings->Add()->Port = 8080;
RESTServer->CORSOptions->Enabled = true;
RESTServer->ServerStats = HTTPServerStats1;
RESTServer->Active = true;

// OpenAPI 客户端:使用 Basic 身份验证调用任何以 OpenAPI 描述的 API
TsgcOpenAPI_Client *APIClient = new TsgcOpenAPI_Client(this);
APIClient->SetBaseURL("https://api.example.com");
APIClient->Authentication->Basic->Enabled = true;
APIClient->Authentication->Basic->Username = "apiuser";
APIClient->Authentication->Basic->Password = "...";

TsgcOpenAPIRequest *Request = new TsgcOpenAPIRequest();
TsgcOpenAPIResponse *Response = new TsgcOpenAPIResponse();
APIClient->HTTP_REQUEST(Request, Response);

无需附加组件,覆盖所有平台

全部七个类都运行在 RAD Studio 自带的标准 Indy 库之上,因此 sgcWebSockets 已经覆盖的整个平台范围,无需任何附加组件即可使用。

REST 服务器家族 TsgcHTTPRESTServer、ServerStats、Tenancy 与 Users
Windows Win32 Windows Win64 Linux64 macOS iOS Android
OpenAPI 服务器与客户端家族 规范优先、代码优先以及 OpenAPI 客户端类
Windows Win32 Windows Win64 Linux64 macOS iOS Android
IDE 支持 一份源码树,每个版本各有设计期包
Delphi 7 到 13 C++ Builder
代码优先 OpenAPI 需要 Delphi XE7 才引入的 RTTI
Delphi XE7 到 13
试用安装程序 sgcWebSockets All-Access 试用版包含 sgcREST 组件
一次下载,全部七个类

下载试用安装程序 →

一个独立的包

sgcREST 单独授权,单个开发者起价 €249。所有授权均包含完整源代码、1 年更新,以及 50% 到 70% 的续订折扣:续订 1 个包为 50%,2 个包为 60%,3 个及以上为 70%。sgcAI、sgcMQ、sgcSocial、sgcAuth、sgcHTTP 和 sgcREST 各算作一个包。sgcREST 也包含在 All-Access 套装中。

sgcREST

€249

提供 Single、Team 和 Site 授权。

  • 带 CORS、统计、租户与用户的 REST 服务器
  • OpenAPI 服务器,规范优先与代码优先
  • 面向任意 OpenAPI 描述 API 的 OpenAPI 客户端
  • 已包含 sgcWebSockets Core 运行时
  • Delphi 7 到 13 和 C++ Builder
  • 完整源代码
  • 1 年更新

结算时无需添加或移除任何附加组件,sgcREST 运行在 RAD Studio 自带的标准 Indy 库之上。

结算页面会列出两项:计价为零的 sgcWebSockets Core 运行时授权,以及 sgcREST 包本身。查看完整价格详情

3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
30 天退款保证不满意?可在购买后 30 天内申请全额退款。 查看退款政策

REST API 与 OpenAPI,原生构建于原生代码之中

一个带统计、多租户与用户管理的 REST 服务器,一个支持规范优先或代码优先的 OpenAPI 服务器,以及一个可调用任意 OpenAPI 描述 API 的 OpenAPI 客户端,运行时已内置,完整源代码就在包里。立即下载 All-Access 试用安装程序,体验全部七个类。

eSeGeCe 的其他产品

把 sgcREST 与我们其他的 Delphi、C++ Builder 和 .NET 组件库搭配使用。

sgcWebSockets

完整的库:WebSocket 客户端和服务器、HTTP/2、gRPC、IoT、P2P 和 AI 组件。它的 Enterprise 版本也包含 OpenAPI 服务器。

了解更多 →

sgcHTTP

HTTP/2、gRPC 和 Google Cloud Pub/Sub、Calendar 和 Firebase Cloud Messaging 客户端组件,已内置 Core 运行时。

了解更多 →

sgcAuth

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

了解更多 →

sgcAI

AI、LLM 与 MCP 组件。一个聊天组件即可接入 OpenAI、Anthropic、Gemini、DeepSeek、Ollama、Grok 和 Mistral。

了解更多 →

sgcMQ

原生 MQTT 3.1.1/5.0、AMQP 0.9.1、AMQP 1.0、Apache Kafka 和 STOMP 客户端组件,已内置 Core 运行时。

了解更多 →

sgcOpenAPI

一款独立打包的产品:OpenAPI 3.x 解析器、原生 Pascal SDK 生成器,以及超过 1,195 个预构建云 SDK,用于离线代码生成,而非运行时客户端。

了解更多 →