HTTP Handler
Databend HTTP Handler 是一个 REST API,用于发送查询语句在服务器上执行,并将结果返回给客户端。
HTTP Handler 由 databend-query 托管,可以通过使用 --http_handler_host
和 --http_handler_port
来指定(默认为 8000)。
HTTP 方法
概述
此 Handler 以 pages
形式返回结果,并支持长轮询。
- 首先,通过
POST
方法向/v1/query
发送一个类型为QueryRequest
的 JSON,其中包含要执行的 SQL 语句,返回一个类型为QueryResponse
的 JSON。 - 使用
QueryResponse
的字段进行进一步处理:- 通过
GET
方法访问next_uri
返回查询结果的下一个page
。它也返回QueryResponse
,以相同的方式处理,直到next_uri
为 null。 - (可选)通过
GET
方法访问kill_uri
来终止查询。返回空 body。 - (可选)通过
GET
方法访问stats_uri
来仅获取一次统计信息(不进行长轮询),返回data
字段为空的QueryResponse
。
- 通过
请注意,在查询完成之前,您应该持续使用最新的 next_uri
来获取下一页结果,否则可能会错过一些结果或泄漏会话资源,直到会话超时。当您收到查询的所有结果时,next_uri
将为 null。
快速示例
curl -u root: \
--request POST \
'127.0.0.1:8001/v1/query/' \
--header 'Content-Type: application/json' \
--data-raw '{"sql": "SELECT avg(number) FROM numbers(100000000)"}'
SQL 将使用默认会话和分页设置运行,主要包括:
- 使用具有
default
数据库的新的一次性会话。 - 每次请求最多等待 1 秒钟以获取结果,然后返回。
有关更多高级配置,请参见下面的参考: