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

API7 表达式

API7 表达式(API7 Expressions)是变量、运算符和值的组合,可被求值并返回结果,例如布尔值 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", "~*", "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"]]

逻辑运算符

API7 企业版支持以下逻辑运算符:

运算符解释
AND如果 A 和 B 都为 true,则 AND(A,B) 为 true。
OR如果 A 或 B 为 true,则 OR(A,B) 为 true。
!AND如果 A 或 B 为 false,则 !AND(A,B) 为 true。
!OR仅当 A 和 B 都为 false 时,!OR(A,B) 为 true。

你可以使用逻辑运算符将多个表达式组合进行求值,例如:

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