HTTP SQL API
功能
StarRocks 3.2.0 版本提供了 HTTP SQL API,方便用户通过 HTTP 协议使用 StarRocks 的查询功能,当前支持 SELECT、SHOW、EXPLAIN、KILL 语句。
使用 curl 命令的一个语法示例:
curl -X POST 'http://<fe_ip>:<fe_http_port>/api/v1/catalogs/<catalog_name>/databases/<database_name>/sql' \
-u '<username>:<password>' -d '{"query": "<sql_query>;", "sessionVariables":{"<var_name>":<var_value>}}' \
--header "Content-Type: application/json"
请求报文
Request line
POST 'http://<fe_ip>:<fe_http_port>/api/v1/catalogs/<catalog_name>/databases/<database_name>/sql'
| Field | Description |
|---|---|
| fe_ip | FE 节点 IP。 |
| fe_http_port | FE 节点 HTTP Port。 |
| catalog_name | 数据目录名称。3.2.0 版本仅支持查询 StarRocks 内部表,即 <catalog_name> 仅支持为 default_catalog。从 3.2.1 版本开始,支持查询外部 Catalog 下的表。 |
| database_name | 数据库名称。如果未指定数据库名称,那么在 SQL query 语句中出现的表名前面需要加上 database 名,比如 database_name.table_name。 |
-
指定 catalog,跨 database 查询。SQL 语句中出现的表前面需要加上 database 名。
POST /api/v1/catalogs/<catalog_name>/sql -
指定 catalog 和 database 查询。
POST /api/v1/catalogs/<catalog_name>/databases/<database_name>/sql
认证方式
Authorization: Basic <credentials>
使用 Basic authentication 进行认证,即 credentials 里填写用户名和密码 (-u '<username>:<password>')。注意如果账号没有设置密码,只需传入 <username>:,密码留空。举例,如果 root 账号没有设置密码,则写作 -u 'root:'。
Request body
-d '{"query": "<sql_query>;", "sessionVariables":{"<var_name>":<var_value>}}'
| Field | Description |
|---|---|
| query | SQL 语句,STRING 格式。当前支持 SELECT、SHOW、EXPLAIN、KILL 语句。一次 HTTP 请求只允许执行一条 SQL。 |
| sessionVariables | 指定的 session 变量,JSON 格式。可选,默认为空。设置的 session 变量在同一连接中始终有效,连接断开后 session 变量失效。 |
Request header
--header "Content-Type: application/json"
表示发送的请求体是 JSON 字符串。