任何 SQL 查询 变成一个 REST API 端点
在查询生成器中针对 59 个连接器中的任意一个编写查询,然后单击 新端点这样,您就可以在 api.querystreams.com 上获得一个带有专属密钥的 URL。SQL 语句在已部署到您数据上的代理程序上以只读方式运行;调用者会收到 JSON 或 CSV 格式的数据,而不会看到 SQL 语句、架构或凭据。无需托管服务器,无需开放端口,所有套餐(包括免费套餐)均包含此功能。本页为概述;每个连接器都有其专属指南,详见下方。
你最终会得到什么
这是一个 URL,持有密钥的用户可以通过它访问已保存查询的行数据。在分享此 URL 之前,请先在门户网站的控制台中进行测试。例如:
| 钥匙 | 价值 | 描述 |
|---|---|---|
城市 字符串 选修的 | 西雅图 | 从已保存的查询中调用过滤器 |
X-API密钥 | qsapi_AB•••••••••• | 你的秘密令牌 |
{
“城市”: “西雅图”
}| 标题 | 价值 | 描述 |
|---|---|---|
X-API密钥 | qsapi_AB•••••••••• | 您的秘密令牌。每位来电者限用一个,可随时撤销。 |
内容类型 | application/json | 参数以 JSON 正文的形式传递。 |
接受 | application/json | 返回 JSON 格式;请求 text/csv 格式,则返回 CSV 格式。 |
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"city": "Seattle"}'{
“列”: [ { “姓名”: "customer_id", “类型”: 整数 }, { “姓名”: “姓名”, “类型”: “细绳” }, { “姓名”: “城市”, “类型”: “细绳” } ],
“行”: [
{ "customer_id": 1042, “姓名”: “北风贸易公司”, “城市”: “西雅图” },
{ "customer_id": 1057, “姓名”: “高山装备店”, “城市”: “丹佛” },
{ "customer_id": 1063, “姓名”: “港口食品”, “城市”: “哈利法克斯” }
],
“元”: { 行数: 3, "agent_duration_ms": 41, "request_id": "req_7Hq2mKd9" }
}| 标题 | 价值 | 描述 |
|---|---|---|
内容类型 | application/json; charset=utf-8 | 正文选项卡上的信封 |
内容长度 | 412 | 返回的字节数;上方“大小”徽章 |
大多数将 REST API 集成到数据库的工具,例如 PostgREST、Hasura、DreamFactory、Directus 以及你自己编写的框架,都会暴露数据库模式:每个表都成为一个端点,调用者可以浏览这些数据。而 Query Streams 则恰恰相反。一个已保存的查询就能精确定义端点返回的内容。调用者只能获取这些行,而无需了解它们的生成方式。你也无需运行 API 服务器,因为你已有的 Agent 会执行查询,而 api.querystreams.com 会处理 HTTP 请求。
你需要准备什么
计算机上的代理程序可以访问您自己的数据库,并且已添加连接。
通常是数据库服务器本身,或者同一网络上的始终在线的计算机。
查询生成器中已保存的查询
该端点仅封装一个已保存的查询。编写 SELECT 语句,运行一次,然后保存。添加动态筛选器( @variable 在 WHERE 子句中)如果调用者应该能够进行筛选。
谁可以创建端点? 所有者、管理员和创建者。如果 API 您的顶部栏缺少某个项目,管理员可以为您的用户启用它。 账户 → 权限任何与您共享端点的人只需要一个 Query Streams 帐户,任何套餐均可。
分四步完成设置
保存查询
在 查询生成器 选择一个连接,编写 SELECT 语句并运行一次。
@variableWHERE 子句中的参数会变成 API 参数:已保存的查询 · 包含一个动态筛选器选择 客户ID、姓名、城市 从 客户 地点 城市 = @city 命令 经过 姓名;
点击 节省;该名称将成为端点的显示名称。
创建端点
打开 API 在顶部栏中,点击 新端点,以及在 选择查询 点击您保存的查询。点击 下一页.
配置并锁定参数
在 配置 保持 寿命 永恒的, 响应模式 静态和 内页格式 第一个端点的 JSON 格式;模式和格式一旦创建就固定下来。 锁定参数 离开
城市作为 可调用,或 锁 将其设置为调用者无法更改的固定值。点击 下一页.分享即可获得您的钥匙
邀请 人们 通过电子邮件添加 服务密钥 点击获取工具,或者暂时跳过,然后点击 创建并获取我的密钥复制以 开头的 49 个字符的密钥
qsapi_;之后可以从……中再次揭示。 共享 点击标签。 发送 在控制台中发起第一次调用。
就是这样。 查询结果会以只读方式返回给您提供的密钥的 URL。以下每个连接器指南都遵循相同的四个步骤,但会使用该连接器自身的 SQL 语句以及它特有的注意事项。
无论从哪里拨打电话
将端点 ID 替换为您自己的 ID。 qsapi_YOUR_KEY 用你的钥匙:
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?city=Seattle" \ -H "X-API-Key: qsapi_YOUR_KEY"
{
“列”: [ { “姓名”: "customer_id", “类型”: 整数 }, { “姓名”: “姓名”, “类型”: “细绳” }, { “姓名”: “城市”, “类型”: “细绳” } ],
“行”: [
{ "customer_id": 1042, “姓名”: “北风贸易公司”, “城市”: “西雅图” },
{ "customer_id": 1057, “姓名”: “高山装备店”, “城市”: “丹佛” },
{ "customer_id": 1063, “姓名”: “港口食品”, “城市”: “哈利法克斯” }
],
“元”: { 行数: 3, "agent_duration_ms": 41, "request_id": "req_7Hq2mKd9" }
}返回的行是以列名为键的对象,包含列列表和一个 元 该信息块会告诉你有多少行数据、结果是否被截断以及你可以引用的请求 ID。与 POST 请求相同的操作会将参数放在 JSON 正文中,这对于较长的值列表来说是合适的选择:
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"params": {"city": "Seattle"}}'格式=csv- 格式为 CSV 而非 JSON,包含表头行。
接受:文本/CSV也一样。流式端点返回 NDJSON(每行一个 JSON 对象),并以结尾结尾。{"_summary": true, "row_count": N}检查最后一行。 ?sample=true- 最多五排,不计费。适合给客户接线。
压缩=lz4- 适用于高流量呼叫者的 LZ4 框架机身,配备解码器; 代码 选项卡中包含每种语言的解码器代码片段。客户端发送文件时,会自动进行纯 gzip 压缩。
Accept-Encoding: gzip. 授权:Bearer qsapi_…- 被接受为别名
X-API密钥. 在浏览器代码中使用它。
它的插头在哪里
Excel 和 Power BI
导出 → Power Query M (.pq) 它会提供一个现成的查询。将其粘贴到高级编辑器中(Excel:数据 → 获取数据 → 来自其他来源 → 空白查询;Power BI:主页 → 转换数据 → 新建源 → 空白查询),并将占位符替换为您的查询语句。 qsapi_ 钥匙。
邮递员、失眠、跳房子
相同 出口 菜单下载 Postman v2.1 集合、Insomnia v5 导出或 Hoppscotch 集合,其中参数已填写完毕,并包含密钥占位符。
你自己的代码
这 代码 该选项卡包含 cURL、Python、JavaScript、TypeScript、Java、C#、Go、PHP、PowerShell 和 Ruby 的工作示例。 导出 → OpenAPI 3.1 规范 可为任何客户端生成器或 Swagger UI 提供数据。
n8n、Zapier、Make、cron
创建一个 服务密钥 对于该工具,请将 URL 和密钥粘贴到其 HTTP 节点中,并进行调度。每个工具都有自己的密钥,因此您可以撤销其中一个工具的密钥而不会影响其他工具。
按连接器指南
Query Streams 支持的所有连接器都可以以这种方式发布。请选择您需要的连接器:
你运行的数据库
数据仓库
托管数据库
文件和日志文件夹
SaaS 和 API 连接器
消费者指南: 通过 Power Query M 集成 Power BI 和 Excel.
这些计划允许什么?
| 计划 | 终点 | 每个端点的键 | 每个端点的人数 | 每次调用行数(静态) | 每次调用(流式传输)的行数 | 每分钟按键通话次数 |
|---|---|---|---|---|---|---|
| 免费 | 1 | 2 | 1 | 250 | 250 | 3 |
| 个人核心 | 2 | 3 | 2 | 5,000 | 250,000 | 15 |
| 个人加强版 | 5 | 5 | 5 | 10,000 | 500,000 | 30 |
| 核心业务 | 5 | 10 | 10 | 50,000 | 1,000,000 | 300 |
| 商务+ | 10 | 20 | 25 | 100,000 | 5,000,000 | 600 |
| 商业最大 | 25 | 30 | 50 | 250,000 | 10,000,000 | 600 |
| 企业核心 | 50 | 50 | 100 | 500,000 | 25,000,000 | 1,000 |
| 企业增强版 | 100 | 100 | 250 | 1,000,000 | 50,000,000 | 1,000 |
| 企业版 Max | 250 | 200 | 500 | 2,500,000 | 100,000,000 | 1,500 |
每次调用都有固定的 60 秒查询超时时间和 8 MiB 的响应大小上限,返回的数据量会计入您套餐的每月数据流量限额,与 Excel 和 Google Sheets 插件使用的限额相同。免费套餐只有一个端点,每月 5 MB 流量,足以满足每天多次调用的小型表格的需求。 请查看定价页面 按计划发放津贴。
免费是一种你可以坚持的计划。 这不是一份会过期的试用期。请查看以下内容,了解具体包含哪些内容。 定价页面.
确保安全
SQL 代码仍然归您所有。
调用者只能获取数据行。他们看不到查询语句、表名或连接详情,也无法更改端点运行的内容。
一个密钥,一个端点,一个呼叫者
一个密钥只能对应一个终端。给每个人或工具分配一个密钥,每次调用都会被记录到该密钥下。撤销其中一个密钥,其他密钥仍然有效;撤销操作大约会在五分钟内生效。
只读,在你这边的墙里
代理程序仅运行已保存的 SELECT 查询,不会执行其他任何操作,它在您的网络内部,通过自身的出站连接运行。无需打开任何端口,也无需在互联网上提供任何凭据。
账簿中的每一次通话
这 活动 该标签页显示每次呼叫的时间、接收方、状态、行数、字节数和持续时间,包括被拒绝的呼叫。设置一个 即将到期 临时共享的生命周期以及端点会在指定日期自动关闭。
当某些事情不起作用时
| 现状 | 代码 | 该怎么办 |
|---|---|---|
| 401 | API密钥已要求 / API密钥无效 | 缺少标头或密钥错误。发送 X-API-Key:qsapi_…全部49个字符。密钥可以从终端的“共享”选项卡中再次复制。 |
| 403 | API_KEY_ENDPOINT_MISMATCH | 在不同的端点上使用的有效密钥。每个密钥都属于一个端点。 |
| 403 | API密钥已撤销 / API端点已过期 | 密钥已被撤销或端点已过期。请生成新密钥或恢复端点。 |
| 400 | API_PARAM_NOT_OVERRIDABLE | 您发送了一个参数,但其所有者未将其标记为可调用。请求体列出了允许的名称。 |
| 414 | API 查询过大 | GET 请求字符串传递了 8 KB 或 200 个列表值。请将相同的参数作为 POST 请求的 JSON 正文发送。 |
| 413 | API 输出过大 | 结果超过了 8 MiB 的上限。请缩小查询范围,或将端点切换为流式传输。 |
| 429 | API_RATE_LIMITED | 这分钟内对密钥或端点的呼叫过多。请稍候。 重试后 秒,或举 利率限制 在 API 设置 → 套餐默认设置下。 |
| 429 | API_DATA_REALM_EXHAUSTED | 用户每月的数据流量已用完。流量将在下个月结算时重置;如需更多流量,请升级套餐。 |
| 503 | API代理未连接 | 您数据库背后的代理已离线。请在“数据”→“数据代理”下检查;代理重新连接后,调用将再次成功。 |
| 504 | API 查询超时 | 查询耗时超过 60 秒。请添加筛选条件或索引,或者保存更精确的查询语句。 |
每个错误体都有其形状 {"error": {"code": "…", "message": "…"}} 每个回应都包含一个 X-QS-请求-ID 邮件头。在联系客服时,请将 ID 号括起来。
人们提出的问题
我的数据会被复制到查询流吗?
不。代理程序会运行查询,查找您的数据,并仅发送调用请求的行。期间不会进行任何同步或缓存;每次调用都会运行查询。
用户能否修改 SQL 语句或要求添加其他表?
不。一个端点只会运行一个已保存的查询。调用者只能设置您标记的参数。 可调用并且这些值被安全地绑定:文本被引用和转义,数字被范围检查,列表被展开。
我该如何把这个交给我的搭档?
在端点上 共享 选择标签 人们 然后输入他们的邮箱地址。他们会收到一个神奇的链接,使用该地址登录(免费账户即可),并生成自己的密钥;您可以在“活动”选项卡上按名称查看他们的调用记录。对于服务器或自动化工具,请创建一个 API密钥 改为贴上标签。
当我编辑已保存的查询时会发生什么?
该端点会在下次调用时运行新的 SQL 语句,并重新生成其 OpenAPI 规范。URL 和键值不会改变。如果您添加或删除过滤器,请重新访问该端点。 锁定参数 这样,来电者就能看到正确的参数。
免费套餐真的包含这些吗?
是的。免费版是永久有效的,不是会过期的试用版。它包含一个端点、两个密钥,每次调用最多可处理 250 行数据。请查看具体包含内容。 定价页面.
这与 PostgREST、Hasura 或 DreamFactory 有何不同?
这些方法会将您的模式暴露为 API,并由您自行托管。在这里,一个已保存的查询对应一个端点,SQL 和模式保持私有,而且无需托管任何内容:您已运行的代理会执行查询,而 api.querystreams.com 则提供 HTTP 请求、密钥、速率限制和账本服务。
一个端点能否连接来自两个数据库的数据?
是的。在查询构建器中保存联合(跨源)查询并将其公开;联合端点以静态模式运行。
我可以直播大量结果吗?
选择 流媒体 创建端点时,响应模式即为此设置。数据行以 NDJSON 或 CSV 格式分块到达,直至达到您套餐的流式传输行上限,并在末尾附有汇总行。
相关指南
Setup trouble?
- Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?

