网络服务
请参阅页面 Web 服务资源,以获取当前支持的资源列表以及 JSON 响应示例。
核心库 mcorest
实现了网络服务库所使用的基础功能(解析和分发 HTTP 请求、格式化 JSON 等)。每个网络服务库都会向核心库注册自身,并通过一个或多个 URL 路径提供其服务。
提供公网服务的应用程序将与核心库以及网络服务库及其依赖项进行链接。网络服务库之间并非相互依赖,应用程序可以仅选择其所需的服务。
请注意,服务必须通过各自的 mcocore_svc_*_init()
函数由应用程序显式初始化。
目前实现了三个网络服务库:
mcorestdb
:实现基本的数据库相关功能:列出数据库以及获取基本的类统计信息。(需要mcouda
)mcorestsql
:实现与 SQL 相关的功能;目前仅显示引擎统计信息和 RSQL 客户端信息。(需要mcosql
)mcorestperf
:提供性能监视器统计信息。(需要mcoperf
)
有关概述,请参阅网络服务页面。
为 mcorest 创建新的 Web 服务
可以使用头文件中定义的 mcorest API 创建新的 Web 服务。Web 服务将:mcorestapi.h
- 选择要提供的 URL 路径(例如
/api/myservice
)。 - 将服务实现为一个 C 函数,其结构必须与
mcorest_api_handler_fn
类型相匹配。 - 使用
mcorest_api_register_service()
函数将 URL 路径和处理例程注册到mcorest
核心库中。
当核心库收到针对已注册路径的 Web 服务的 HTTP 请求时,Web 服务库中的处理程序例程将被调用。该处理程序将:
- 可选地解析通过处理程序的
path_suffix
参数传递的 URL 路径的子元素和查询参数。 使用 mcorest_api_status_*()
调用之一发送状态码。- 如果状态码为 200/OK,则处理程序可选地使用
mcorest_api_json_write()
方法发送 JSON 响应。 - 返回
MCO_S_OK
代码。 - 如果处理程序在某个点失败,应返回
MCO_E_REST_*
错误代码之一。但请注意,在这种情况下,HTTP 连接将被断开,不会发送 HTTP 响应。
必要和可选库
希望使用 Web 服务的 C 和 C++ 应用程序必须与以下库链接:
库名 | 说明 |
---|---|
mcorest | 嵌入式 Web 服务 REST API |
mcoews | HTTP 服务器实现 |
mcosaltimer | 低分辨率和高分辨率定时器实现 |
mcosalsmp | 多线程支持需要 |
希望提供公网服务的应用程序将链接到其库以及其依赖项:
库名 | 说明 |
---|---|
mcorestdb | 数据库网络务;需要 mcouda 以使用 UDA API |
mcorestsql | SQL 网络服务;需要 mcosql |
mcorestperf | 性能监视器网络服务;需要 mcoperf |
API 参考
下表列出了网络服务 C API函数:
函数 | 说明 |
---|---|
mcorest_initialize() | 初始化MCO REST服务器运行时 |
mcorest_svc_db_init() | 初始化数据库web服务库 |
mcorest_svc_perf_init() | 初始化perfmon web服务库 |
mcorest_svc_sql_init() | 初始化SQL web服务库 |
mcorest_create() | 创建MCO REST服务器实例并将其句柄存储在REST参数 |
mcorest_add_interface() | 为MCO REST服务器实例 |
mcorest_set_basic_auth() | 设置服务器实例 |
mcorest_reset_basic_auth() | 重置HTTP基本鉴权参数,关闭鉴权 |
[mcorest_start()](Web_Services/ Start .htm) | 启动MCO REST服务器 |
mcorest_stop() | 在使用mcorest_start() |
mcorest_interface_check() | 检查接口是否有传入网络连接 |
mcorest_conn_execute() | 执行一个或多个HTTP请求 |
mcorest_conn_cancel() | 关闭活动连接 |
mcorest_interface_close() | 关闭接口 |
mcorest_destroy() | 销毁MCO REST服务器实例 |
mcorest_shutdown() | 关闭MCO REST服务器运行时 |
mcorest_api_handler_fn() | Web服务请求处理程序例程 |
mcorest_api_failure() | 记录处理程序失败的详细信息 |
mcorest_api_failure_clear() | 重置先前设置的与HTTP请求对象 |
mcorest_api_stream_with_request() | 从MCO EWS HTTP请求初始化流 |
mcorest_api_request_from_stream() | 返回与流 |
mcorest_api_register_service() | 注册URL路径和处理程序例程与mcorest核心库 |
mcorest_api_status_*() | 发送API状态码给web服务调用者 |
mcorest_api_json_read_*() | 读取JSON数据的函数 |
mcorest_api_json_write_*() | 写JSON数据的函数 |