使用 InfluxDB v1 HTTP 查询 API 和 InfluxQL 查询数据
使用 InfluxDB v1 HTTP 查询 API 和 InfluxQL 在 InfluxDB 3 Core 中查询数据。
以下示例使用 cURL 向 InfluxDB v1 HTTP API 发送 HTTP 请求,但您可以使用任何 HTTP 客户端。
InfluxQL 功能支持
InfluxQL 正在进行重构,以适应 InfluxDB 3 存储引擎。此过程正在进行中,某些 InfluxQL 功能仍在实现中。有关 InfluxQL 功能当前实现状态的信息,请参阅 InfluxQL 功能支持。
使用 v1 /query 端点和 GET 请求方法使用 InfluxQL 查询数据
GET https://:8181/query
身份验证 API 请求
InfluxDB 3 Core 要求每个 API 请求都使用 令牌 进行身份验证。对于 InfluxDB 3 中与 InfluxDB v1 兼容的端点,您可以使用 InfluxDB 1.x 用户名和密码方案中的数据库令牌、InfluxDB v2 Authorization: Token 方案中的令牌,或者 OAuth Authorization: Bearer 方案中的令牌。
使用用户名和密码方案进行身份验证
对于 InfluxDB 3 中与 InfluxDB v1 兼容的端点,您可以使用 InfluxDB 1.x 的用户名和密码约定,通过将 令牌 作为 password 凭据来验证数据库读取。在向 v1 API /query 端点进行身份验证的请求时,InfluxDB 3 Core 会检查 password (p) 值是否为已授权的 令牌。InfluxDB 3 Core 会忽略请求中的 username (u) 参数。
对于支持基本身份验证或查询参数的客户端,使用以下身份验证方案之一
Basic 身份验证
使用 Authorization 标头和 Basic 方案来验证 v1 API /query 请求。在验证请求时,InfluxDB 3 Core 会检查解码凭据的 password 部分是否为已授权的 令牌。InfluxDB 3 Core 会忽略解码凭据的 username 部分。
语法
Authorization: Basic <base64-encoded [USERNAME]:DATABASE_TOKEN>使用 base64 编码 [USERNAME]:DATABASE_TOKEN 凭据,然后将编码后的字符串附加到 Authorization: Basic 标头。
示例
以下示例显示了如何将 cURL 与 Basic 身份验证方案结合使用
curl --get "https://:8181/query" \
--user "any:DATABASE_TOKEN" \
--data-urlencode "db=DATABASE_NAME" \
--data-urlencode "q=SELECT * FROM home"查询字符串身份验证
在 URL 中,传递 p 查询参数以验证 /query 请求。在验证请求时,InfluxDB 3 Core 会检查 p (password) 值是否为已授权的 令牌,并忽略 u (username) 参数。
语法
https://:8181/query/?u=any&p=DATABASE_TOKEN示例
以下示例显示了如何将 cURL 与查询字符串身份验证结合使用
curl --get "https://:8181/query" \
--data-urlencode "p=DATABASE_TOKEN" \
--data-urlencode "db=DATABASE_NAME" \
--data-urlencode "q=SELECT * FROM home"使用令牌方案进行身份验证
使用 Authorization: Bearer 或 Authorization: Token 方案来传递 令牌,以验证 v1 API /query 请求。
在 InfluxDB 3 Core 中,Bearer 和 Token 是等效的。Token 方案用于 InfluxDB 2.x API。Bearer 由 OAuth 2.0 框架 定义。对其中一个的支持可能因 InfluxDB API 客户端而异。
语法
Authorization: Bearer DATABASE_TOKENAuthorization: Token DATABASE_TOKEN示例
使用 Bearer 验证查询请求
curl --get "https://:8181/query" \
--header "Authorization: Bearer DATABASE_TOKEN" \
--data-urlencode "db=DATABASE_NAME" \
--data-urlencode "q=SELECT * FROM home"使用 Token 验证查询请求
curl --get "https://:8181/query" \
--header "Authorization: Token DATABASE_TOKEN" \
--data-urlencode "db=DATABASE_NAME" \
--data-urlencode "q=SELECT * FROM home"查询参数
对于 InfluxDB 3 Core v1 API /query 请求,请设置以下表中列出的参数
| 参数 | 允许在 | 已忽略 | Value |
|---|---|---|---|
chunked | 查询字符串 | 已遵守 | 将点以流式批处理的形式返回,而不是以单个响应的形式返回。如果设置为 true,InfluxDB 将按系列或每 10,000 个点进行分块响应,以先发生的为准。 |
chunked_size | 查询字符串 | 已遵守 | 要求 chunked 设置为 true。如果设置为特定值,InfluxDB 将按系列或此数量的点进行分块响应。 |
db * | 查询字符串 | 已遵守 | 数据库名称 |
epoch | 查询字符串 | 已遵守 | 时间戳精度 |
p | 查询字符串 | 已遵守 | 对于 查询字符串身份验证,令牌 |
pretty | 查询字符串 | 已忽略 | N/A |
q * | 查询字符串 | 已遵守 | URL 编码的 InfluxQL 查询 |
rp | 查询字符串 | 已遵守,但不推荐 | Retention policy |
u | 查询字符串 | 已忽略 | 对于 查询字符串身份验证,任意字符串 |
Authorization | Header | 已遵守 | Bearer DATABASE_TOKEN, Token DATABASE_TOKEN, 或 Basic <base64 [USERNAME]:DATABASE_TOKEN> |
时间戳精度
使用以下值之一表示时间戳精度
ns: 纳秒us: 微秒ms: 毫秒s: 秒m: 分钟h: 小时
替换以下配置值
将结果返回为 JSON 或 CSV
默认情况下,/query 端点返回 JSON 格式的结果,但也可以返回 CSV 格式的结果。要将结果返回为 CSV,请包含 Accept 标头,并指定 application/csv 或 text/csv MIME 类型
curl --get https://:8181/query \
--header "Authorization: Bearer DATABASE_TOKEN" \
--header "Accept: application/csv" \
--data-urlencode "db=DATABASE_NAME" \
--data-urlencode "q=SELECT * FROM home"此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 InfluxDB 3 Core 和本文档提供反馈和错误报告。要获得支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。