跳到主要内容

APISIX 表达式

APISIX 表达式 是变量、运算符和值的组合,可以评估为一个结果,例如布尔值 truefalse。表达式可用于路由匹配、请求过滤、选择性插件应用、日志丰富等配置中。

APISIX 支持评估比较运算符和逻辑运算符,以及 正则表达式 (RegEx)

比较运算符

APISIX 支持以下比较运算符,可与表达式中的 内置变量 一起使用:

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

逻辑运算符

APISIX 支持以下逻辑运算符:

运算符解释
AND如果 A 和 B 都为真,则 AND(A,B) 为真。
OR如果 A 或 B 为真,则 OR(A,B) 为真。
!AND如果 A 或 B 为假,则 !AND(A,B) 为真。
!OR只有当 A 和 B 都为假时,!OR(A,B) 才为真。

你可以使用逻辑运算符组合多个表达式进行评估,如下所示:

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