跳转至

表达式求值

接口描述

本接口用于对 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 认证方式。支持 UIDTOKENACCOUNTAPIKEY
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 为空或表达式不合法时,接口会返回失败响应。具体错误码和错误信息以服务端实际返回为准。

{
  "data": null,
  "success": false,
  "code": "AM_ERROR_CODE",
  "errorMsg": "expr 参数不合法",
  "detailErrorMsg": "4b5d80fad0fc44d0937253362b4e9da5.79456.17490900608203107",
  "traceId": "4b5d80fad0fc44d0937253362b4e9da5.79456.17490900608203107"
}