对每个部分的详细说明:
-XPOST
:指定 HTTP 请求方法为 POST。
http://localhost:8086/query?db=my_database
:设置目标 URL,其中 http://localhost:8086
是 InfluxDB 服务地址,query
是端点路径,db=my_database
是查询参数,指定要查询的数据库名称为 my_database
。
--data-raw
:用于发送原始数据的 curl 选项。在这里,我们使用它来传递批量查询的 JSON 数据。
这是实际的批量查询 JSON 数据示例。其中包含两个查询对象,每个对象都有以下属性:
measurement
:测量名称;
tags
:标签键值对;
fields
:字段列表;
time
:时间戳(可选);
query
:实际的 InfluxDB 查询语句。
5.异常总结
5.1 unable to parse authentication credentials
报错 "unable to parse authentication credentials" 表明在发送 InfluxDB 查询请求时,认证凭据解析错误。这是由于未正确配置或提供身份验证信息导致的。需要在发送 curl 请求时,提供了正确的用户名和密码来进行身份验证。可以使用 -u
参数来指定用户名和密码。以下是一个示例:
curl -XPOST 'http://localhost:8086/query' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-u username:password \
--data-urlencode 'q=SELECT * FROM measurement_name WHERE time > now() - 1h'
请确保在 InfluxDB 的配置文件中启用了身份验证,并且提供了正确的用户名和密码。默认情况下,InfluxDB 的身份验证是禁用的,因此需要手动启用并配置用户凭据。
如果问题仍然存在,请检查用户名和密码是否正确,以及 InfluxDB 配置文件中是否正确配置了身份验证。
5.2 database name required
报错 "database name required" 表明在发送 InfluxDB 查询请求时,未提供数据库名称。查询语句需要指定要使用的数据库。
curl -XPOST 'http://localhost:8086/query' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-u username:password \
--data-urlencode 'q=SELECT * FROM measurement_name WHERE time > now() - 1h' \
--data-urlencode 'db=your_database_name'
在上述示例中,将 your_database_name
替换为实际的数据库名称,并确保提供了正确的数据库名称。
6.使用postman请求query
-u 需要转换为 Authorization 的请求头,使用python的base64计算的具体方法为:
import base64
username = 'admin'
password = 'password'
credentials = username + ':' + password
base64_credentials = base64.b64encode(credentials.encode()).decode()
authorization = 'Basic ' + base64_credentials
print(authorization)
根据 生成的 Authorization 配置到 postman 中。
将 查询 的sql,db配置到查询的body
header部分:
body部分
https://docs.influxdata.com/influxdb/v1.7/tools/api/