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

API7 表达式

API7表达式 是由变量、运算符和值组成的组合,可被解析为结果(如布尔值 truefalse)。表达式可用于路由匹配、请求过滤、选择性插件应用、日志增强等配置场景。

API7 企业版支持比较运算符、逻辑运算符以及正则表达式(RegEx)的解析。

比较运算符

API7 企业版支持以下与内置变量配合使用的比较运算符:

运算符描述示例
==等于["arg_version", "==", "v2"]
~=不等于["arg_version", "~=", "v2"]
>大于["arg_ttl", ">", 3600]
>=大于等于["arg_ttl", ">=", 3600]
<小于["arg_ttl", "<", 3600]
<=小于等于["arg_ttl", "<=", 3600]
~~正则匹配["arg_env", "~~", "[Dd]ev"]
~*正则匹配(不区分大小写)["arg_env", "~~", "dev"]
in存在于右侧值中["arg_version", "in", ["v1","v2"]]
has包含右侧项["graphql_root_fields", "has", "owner"]
["post_arg.messages[*].content[*].type","has","image_url"]
!反转相邻运算符["arg_env", "!", "~~", "[Dd]ev"]
ipmatchIP地址匹配["remote_addr", "ipmatch", ["192.168.102.40", "192.168.3.0/24"]]

逻辑运算符

APISIX 支持以下逻辑运算符:

运算符说明
ANDAND(A,B) 当 A 和 B 都为真时返回 true
OROR(A,B) 当 A 或 B 任一为真时返回 true
!AND!AND(A,B) 当 A 或 B 任一为假时返回 true
!OR!OR(A,B) 仅当 A 和 B 都为假时返回 true

您可以使用逻辑运算符组合多个表达式进行解析,例如:

[
"AND",
["arg_version", "==", "v2"],
[
"OR",
["arg_action", "==", "signup"],
["arg_action", "==", "subscribe"]
]
]