表达式求值
接口描述
本接口用于对 AnyMetrics 表达式进行求值,适用于接入系统在调用指标看板相关接口前,先计算动态日期、默认筛选值或其他表达式结果。
接口只接收一个表达式字符串 expr。服务端会在当前租户和当前认证用户的上下文中执行表达式,并把执行结果放在统一响应结构的 data 字段中返回。
典型使用场景:
- 计算动态日期,例如当前日期、近 7 天起始日期、月初日期等。
- 将看板配置中的表达式转换为可直接用于筛选条件的值。
- 在前端或外部系统不具备 AnyMetrics 表达式解析能力时,由服务端统一求值。
接口URL
POST Http://{anymetrics_host:anymetrics_port}/anymetrics/api/v1/expr/eval
服务地址
本文档中的接口 URL 使用以下占位符:
Http://{anymetrics_host:anymetrics_port}
anymetrics_host:anymetrics_port 获取方式请参考:调用方式。
公共请求参数(HEADERS)
| 参数 | 类型 | 是否必选 | 描述 |
|---|---|---|---|
| tenant-id | String | 是 | 租户 ID,用于标识本次请求访问的 AnyMetrics 租户。 |
| auth-type | String | 是 | 认证方式。支持 UID、TOKEN、ACCOUNT、APIKEY。 |
| auth-value | String | 是 | 与 auth-type 对应的认证值。 |
| Content-Type | String | 是 | 固定为 application/json。 |
| Accept-Language | String | 否 | 语言标识,例如 zh-CN。 |
公共响应参数
除特殊说明外,接口响应均使用统一包装结构:
| 参数 | 类型 | 是否必选 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| data | Object | 否 | 接口业务数据。表达式求值接口中通常为字符串或 null。 |
2026-05-25 00:00:00 | |
| success | Boolean | 是 | 是否成功。 | true | |
| code | String | 是 | 32 | 接口响应码,成功时为 200。 |
200 |
| errorMsg | String | 否 | 512 | 请求失败时的错误信息。 | null |
| detailErrorMsg | String | 否 | 512 | 请求失败时的错误详情;成功时为空。 | null |
| traceId | String | 是 | 128 | 请求链路追踪 ID,用于排查问题。 | 4b5d80fad0fc44d0937253362b4e9da5.79456.17490900608203107 |
请求参数
Body 参数
| 参数 | 类型 | 是否必选 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| expr | String | 是 | 待求值的表达式字符串。不能为空或空白字符串。 | NOW() |
参数说明
expr传入的是 AnyMetrics 表达式字符串,不是 JSON AST,也不需要额外包装表达式结构。- 表达式应符合 AnyMetrics 已支持的表达式语法和函数规则。
- 接口会基于请求 Header 中的租户和认证用户构建执行上下文,因此不同租户或不同用户权限下的结果可能不同。
- 如果
expr缺失、为null、为空字符串或仅包含空白字符,接口会返回参数校验错误。
响应参数
data 参数说明
| 参数 | 类型 | 是否必选 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| data | String | 否 | 表达式求值结果。结果为空时返回 null;日期/日期时间会格式化为字符串;其他类型会转换为字符串。 |
2026-05-25 00:00:00 |
返回值转换规则
| 表达式执行结果类型 | 响应中的 data |
|---|---|
null |
null |
| 日期时间 | 格式化后的日期时间字符串,例如 2026-05-25 00:00:00 |
| 日期 | 格式化后的日期字符串,例如 2026-05-25 |
| 数字、布尔值、文本等其他类型 | 转换为字符串返回 |
表达式示例
| 场景 | expr 示例 | 说明 |
|---|---|---|
| 获取当前时间 | NOW() |
返回当前时间对应的字符串结果。 |
| 获取近 7 天起始时间 | DATE_ADD(NOW(), -7, 'DAY') |
常用于构造最近 7 天筛选条件。 |
| 简单常量计算 | 1 + 1 |
返回计算结果字符串。 |
以上示例用于说明接口调用方式。实际可用函数和表达式语法以当前 AnyMetrics 环境支持能力为准。
请求示例
示例 1:计算当前时间
curl --location --request POST 'http://127.0.0.1:8083/anymetrics/api/v1/expr/eval' \
--header 'tenant-id: tn_19487697' \
--header 'auth-type: UID' \
--header 'auth-value: 463663891121963008' \
--header 'Content-Type: application/json' \
--data-raw '{"expr":"NOW()"}'
示例 2:计算近 7 天起始时间
curl --location --request POST 'http://127.0.0.1:8083/anymetrics/api/v1/expr/eval' \
--header 'tenant-id: tn_19487697' \
--header 'auth-type: UID' \
--header 'auth-value: 463663891121963008' \
--header 'Content-Type: application/json' \
--data-raw "{\"expr\":\"DATE_ADD(NOW(), -7, 'DAY')\"}"
响应示例
成功响应
{
"data": "2026-05-25 00:00:00",
"success": true,
"code": "200",
"errorMsg": null,
"detailErrorMsg": null,
"traceId": "4b5d80fad0fc44d0937253362b4e9da5.79456.17490900608203107"
}
参数错误响应
当 expr 为空或表达式不合法时,接口会返回失败响应。具体错误码和错误信息以服务端实际返回为准。