跳转到主要内容
vsql_http 从查询内部发出 HTTP 请求。触发器可以调用 webhook,SELECT 可以用 API 的数据充实各行,计划事件可以把摘要推送到某个地方,中间 不需要应用层。它基于 libcurl 构建,并以 JSON 返回每个响应。

安装

如果您使用安装脚本、Docker 镜像或发行版压缩包安装了 VillageSQL, vsql_http.veb 已经位于服务器的 lib/veb/ 目录中。 用一条语句将它安装到服务器中:
确认它已存在:
要自行构建,请按照存储库中的 构建说明进行操作。

新增内容

每个请求函数都返回一个包含四个字段的 JSON 对象:status、 content_type、headers 和 content。无法完成的请求(例如连接被拒绝 或超时)返回 NULL,并抛出一条带有 curl 错误消息的警告:
http_request 的 method 参数不区分大小写地匹配 GET、HEAD、POST、PUT、 DELETE、CONNECT、OPTIONS、TRACE 和 PATCH,并以大写发送;其他任何方法 按原样发送。

示例

获取一个 URL,并从响应中读出两个字段:
安全地构建查询字符串:
在 VillageSQL 0.0.6 及更早版本上,响应带有 binary 字符集。 JSON 函数或 JSON 列会拒绝它,因此上面的示例如果去掉 CONVERT, 在这些版本上会失败并报 ERROR 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'.。在 JSON_OBJECT() 或 JSON_ARRAY() 内部它会被接受, 但会被 base64 编码。在这些版本上请保留 CONVERT(... USING utf8mb4); 在 0.0.7 及更高版本上它不是必需的,但保留也无害。
请求会阻塞发出它的语句,默认最长 30 秒。只有 http_request 可以通过 其选项参数缩短该时间,例如 '{"timeout": 5}'。逐行调用会把一次表扫描 变成一连串网络往返,因此请不要对大结果集使用这些调用。

另请参阅