APISIX 表达式
APISIX 表达式 是变量、运算符和值的组合,可以评估为一个结果,例如布尔值 true 或 false。表达式可用于路由匹配、请求过滤、选择性插件应用、日志丰富等配置中。
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"]
]
]