跳到主要内容
版本:2.4.x

连接 CnosDB

CnosDB 支持多种编程语言,以下提供一些示例。

HTTP API 查询命令如下所示,用代码实现 HTTP API 请求时,可以参考此段命令。

语法

curl -X POST "http://<cnosdb_url>:<cnosdb_port>/api/v1/sql?db=<database_name>&pretty=true" \
-u "<username>:<password>" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "<your SQL statement>"

示例

curl -X POST "http://127.0.0.1:8902/api/v1/sql?db=public&pretty=true" \
-u "root:" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "CREATE TABLE air (
visibility DOUBLE,
temperature DOUBLE,
pressure DOUBLE,
TAGS(station)
);"

使用编程语言

示例代码使用reqwest构建Http请求。

http请求需要指定操作的数据库,写在url query里 db=database_name。

let url = Url::parse("http://127.0.0.1:8902/api/v1/sql?db=public&pretty=true").unwrap();
let sql = r#"
CREATE TABLE air (
visibility DOUBLE,
temperature DOUBLE,
pressure DOUBLE,
TAGS(station)
);"#.to_string();

请求执行的SQL放在http的body中。

用户名和密码需要basic编码添加到Authorization头中。

let user_name = "cnosdb";
let password = "";
let http_client = reqwest::Client::new();
let request = http_client
.request(Method::POST, url)
//用户名和密码
.basic_auth::<&str, &str>(user_name, Some(password))
.body(sql)
.build()
.unwrap();

response的status code 会指示SQL是否执行成功,200为成功。

失败信息或正确执行的结果会在response的text()中。

let response = http_client.execute(request).await.unwrap();
let success = response.status().is_success();
let result = response.text().await.unwrap();