统一匹配器 API(proto)
config.common.matcher.v3.Matcher
[config.common.matcher.v3.Matcher proto]
一个匹配器,它可以遍历匹配树以生成匹配操作。在匹配过程中,将遍历树直到找到匹配项,或者如果找不到匹配项,则将评估由最具体的 on_no_match 指定的操作。由于 on_no_match 可能会导致评估另一个匹配树,因此此过程可能会重复多次,直到最终确定 OnMatch(或无匹配)。
注意
请使用语法等效的 匹配 API
{
"matcher_list": {...},
"matcher_tree": {...},
"on_no_match": {...}
}
- matcher_list
(config.common.matcher.v3.Matcher.MatcherList) 要评估的匹配器的线性列表。
必须设置 matcher_list、matcher_tree 中的其中一个。
- matcher_tree
(config.common.matcher.v3.Matcher.MatcherTree) 要评估的匹配树。
必须设置 matcher_list、matcher_tree 中的其中一个。
- on_no_match
(config.common.matcher.v3.Matcher.OnMatch) 如果匹配器失败,则可选的 OnMatch 用于。如果指定,则使用 OnMatch,并且匹配器被认为已匹配。如果未指定,则匹配器被认为未匹配。
config.common.matcher.v3.Matcher.OnMatch
[config.common.matcher.v3.Matcher.OnMatch proto]
如果匹配成功,该怎么做。
{
"matcher": {...},
"action": {...}
}
- matcher
(config.common.matcher.v3.Matcher) 要评估的嵌套匹配器。如果嵌套匹配器不匹配且未指定 on_no_match,则即使此级别或更高级别的谓词返回 true,此匹配器也被认为未匹配。
- action
(config.core.v3.TypedExtensionConfig) 要执行的协议特定操作。
config.common.matcher.v3.Matcher.MatcherList
[config.common.matcher.v3.Matcher.MatcherList proto]
字段匹配器的线性列表。字段匹配器按顺序评估,第一个匹配的获胜。
{
"matchers": []
}
- matchers
(repeated config.common.matcher.v3.Matcher.MatcherList.FieldMatcher, REQUIRED) 匹配器列表。第一个匹配的获胜。
config.common.matcher.v3.Matcher.MatcherList.Predicate
[config.common.matcher.v3.Matcher.MatcherList.Predicate proto]
确定匹配是否成功的谓词。
{
"single_predicate": {...},
"or_matcher": {...},
"and_matcher": {...},
"not_matcher": {...}
}
- single_predicate
(config.common.matcher.v3.Matcher.MatcherList.Predicate.SinglePredicate) 要评估的单个谓词。
必须设置 single_predicate、or_matcher、and_matcher、not_matcher 中的其中一个。
- or_matcher
(config.common.matcher.v3.Matcher.MatcherList.Predicate.PredicateList) 要进行 OR 操作的谓词列表。
必须设置 single_predicate、or_matcher、and_matcher、not_matcher 中的其中一个。
- and_matcher
(config.common.matcher.v3.Matcher.MatcherList.Predicate.PredicateList) 要进行 AND 操作的谓词列表。
必须设置 single_predicate、or_matcher、and_matcher、not_matcher 中的其中一个。
- not_matcher
(config.common.matcher.v3.Matcher.MatcherList.Predicate) 谓词的反转
必须设置 single_predicate、or_matcher、and_matcher、not_matcher 中的其中一个。
config.common.matcher.v3.Matcher.MatcherList.Predicate.SinglePredicate
[config.common.matcher.v3.Matcher.MatcherList.Predicate.SinglePredicate proto]
单个输入字段的谓词。
{
"input": {...},
"value_match": {...},
"custom_match": {...}
}
- input
(config.core.v3.TypedExtensionConfig, REQUIRED) 要匹配的输入字段的协议特定规范。
- value_match
(type.matcher.v3.StringMatcher) 内置字符串匹配器。
必须设置 value_match、custom_match 中的其中一个。
- custom_match
(config.core.v3.TypedExtensionConfig) 用于自定义匹配逻辑的扩展。
必须设置 value_match、custom_match 中的其中一个。
config.common.matcher.v3.Matcher.MatcherList.Predicate.PredicateList
[config.common.matcher.v3.Matcher.MatcherList.Predicate.PredicateList proto]
两个或多个匹配器的列表。用于允许在 oneof 中使用列表。
{
"predicate": []
}
- predicate
(repeated config.common.matcher.v3.Matcher.MatcherList.Predicate, REQUIRED)
config.common.matcher.v3.Matcher.MatcherList.FieldMatcher
[config.common.matcher.v3.Matcher.MatcherList.FieldMatcher proto]
单个匹配器。
{
"predicate": {...},
"on_match": {...}
}
- predicate
(config.common.matcher.v3.Matcher.MatcherList.Predicate, REQUIRED) 确定匹配是否成功。
- on_match
(config.common.matcher.v3.Matcher.OnMatch, REQUIRED) 如果匹配成功,该怎么做。
config.common.matcher.v3.Matcher.MatcherTree
[config.common.matcher.v3.Matcher.MatcherTree proto]
{
"input": {...},
"exact_match_map": {...},
"prefix_match_map": {...},
"custom_match": {...}
}
- input
(config.core.v3.TypedExtensionConfig, REQUIRED) 要匹配的输入字段的协议特定规范。
- exact_match_map
(config.common.matcher.v3.Matcher.MatcherTree.MatchMap) 要查找输入值的精确匹配或前缀匹配映射。如果查找成功,则匹配被认为成功,并且使用相应的 OnMatch。
必须设置 exact_match_map、prefix_match_map、custom_match 中的其中一个。
- prefix_match_map
(config.common.matcher.v3.Matcher.MatcherTree.MatchMap) 最长的匹配前缀获胜。
要查找输入值的精确匹配或前缀匹配映射。如果查找成功,则匹配被认为成功,并且使用相应的 OnMatch。
必须设置 exact_match_map、prefix_match_map、custom_match 中的其中一个。
- custom_match
(config.core.v3.TypedExtensionConfig) 用于自定义匹配逻辑的扩展。
要查找输入值的精确匹配或前缀匹配映射。如果查找成功,则匹配被认为成功,并且使用相应的 OnMatch。
必须设置 exact_match_map、prefix_match_map、custom_match 中的其中一个。
config.common.matcher.v3.Matcher.MatcherTree.MatchMap
[config.common.matcher.v3.Matcher.MatcherTree.MatchMap proto]
已配置匹配器的映射。用于允许在 oneof 中使用映射。
{
"map": {...}
}
- map
(repeated map<string, config.common.matcher.v3.Matcher.OnMatch>)
config.common.matcher.v3.MatchPredicate
[config.common.matcher.v3.MatchPredicate proto]
匹配配置。这是一个递归结构,允许使用各种逻辑运算符构建复杂的嵌套匹配配置。
{
"or_match": {...},
"and_match": {...},
"not_match": {...},
"any_match": ...,
"http_request_headers_match": {...},
"http_request_trailers_match": {...},
"http_response_headers_match": {...},
"http_response_trailers_match": {...},
"http_request_generic_body_match": {...},
"http_response_generic_body_match": {...}
}
- or_match
(config.common.matcher.v3.MatchPredicate.MatchSet) 描述逻辑 OR 的集合。如果集合中的任何成员匹配,则匹配配置匹配。
必须设置 or_match、and_match、not_match、any_match、http_request_headers_match、http_request_trailers_match、http_response_headers_match、http_response_trailers_match、http_request_generic_body_match、http_response_generic_body_match 中的其中一个。
- and_match
(config.common.matcher.v3.MatchPredicate.MatchSet) 描述逻辑 AND 的集合。如果集合中的所有成员都匹配,则匹配配置匹配。
必须设置 or_match、and_match、not_match、any_match、http_request_headers_match、http_request_trailers_match、http_response_headers_match、http_response_trailers_match、http_request_generic_body_match、http_response_generic_body_match 中的其中一个。
- not_match
(config.common.matcher.v3.MatchPredicate) 否定匹配。如果否定匹配条件匹配,则匹配配置将匹配。
必须设置 or_match、and_match、not_match、any_match、http_request_headers_match、http_request_trailers_match、http_response_headers_match、http_response_trailers_match、http_request_generic_body_match、http_response_generic_body_match 中的其中一个。
- any_match
(bool) 匹配配置将始终匹配。
必须设置 or_match、and_match、not_match、any_match、http_request_headers_match、http_request_trailers_match、http_response_headers_match、http_response_trailers_match、http_request_generic_body_match、http_response_generic_body_match 中的其中一个。
- http_request_headers_match
(config.common.matcher.v3.HttpHeadersMatch) HTTP 请求头匹配配置。
必须设置 or_match、and_match、not_match、any_match、http_request_headers_match、http_request_trailers_match、http_response_headers_match、http_response_trailers_match、http_request_generic_body_match、http_response_generic_body_match 中的其中一个。
- http_request_trailers_match
(config.common.matcher.v3.HttpHeadersMatch) HTTP 请求尾部匹配配置。
必须设置 or_match、and_match、not_match、any_match、http_request_headers_match、http_request_trailers_match、http_response_headers_match、http_response_trailers_match、http_request_generic_body_match、http_response_generic_body_match 中的其中一个。
- http_response_headers_match
(config.common.matcher.v3.HttpHeadersMatch) HTTP 响应头匹配配置。
必须设置 or_match、and_match、not_match、any_match、http_request_headers_match、http_request_trailers_match、http_response_headers_match、http_response_trailers_match、http_request_generic_body_match、http_response_generic_body_match 中的其中一个。
- http_response_trailers_match
(config.common.matcher.v3.HttpHeadersMatch) HTTP 响应尾部匹配配置。
必须设置 or_match、and_match、not_match、any_match、http_request_headers_match、http_request_trailers_match、http_response_headers_match、http_response_trailers_match、http_request_generic_body_match、http_response_generic_body_match 中的其中一个。
- http_request_generic_body_match
(config.common.matcher.v3.HttpGenericBodyMatch) HTTP 请求通用主体匹配配置。
必须设置 or_match、and_match、not_match、any_match、http_request_headers_match、http_request_trailers_match、http_response_headers_match、http_response_trailers_match、http_request_generic_body_match、http_response_generic_body_match 中的其中一个。
- http_response_generic_body_match
(config.common.matcher.v3.HttpGenericBodyMatch) HTTP 响应通用主体匹配配置。
必须设置 or_match、and_match、not_match、any_match、http_request_headers_match、http_request_trailers_match、http_response_headers_match、http_response_trailers_match、http_request_generic_body_match、http_response_generic_body_match 中的其中一个。
config.common.matcher.v3.MatchPredicate.MatchSet
[config.common.matcher.v3.MatchPredicate.MatchSet proto]
用于逻辑运算的匹配配置集。
{
"rules": []
}
- rules
(repeated config.common.matcher.v3.MatchPredicate, REQUIRED) 构成集合的规则列表。
config.common.matcher.v3.HttpHeadersMatch
[config.common.matcher.v3.HttpHeadersMatch proto]
HTTP 头部匹配配置。
{
"headers": []
}
- headers
(repeated config.route.v3.HeaderMatcher) 要匹配的 HTTP 头部。
config.common.matcher.v3.HttpGenericBodyMatch
[config.common.matcher.v3.HttpGenericBodyMatch proto]
HTTP 通用主体匹配配置。要定位在 HTTP 主体中的文本字符串和十六进制字符串列表。所有指定的字符串都必须在 HTTP 主体中找到才能进行正匹配。搜索可以限制在从主体开始的指定字节数内。
注意
在 HTTP 主体中搜索模式可能很费 CPU。对于每个指定的模式,HTTP 主体都会逐字节扫描以查找匹配项。如果指定了多个模式,则会针对每个模式重复该过程。如果已知模式的位置,则应指定 bytes_limit
以仅扫描 HTTP 主体的一部分。
{
"bytes_limit": ...,
"patterns": []
}
- bytes_limit
(uint32) 将搜索限制在指定数量的字节内 - 默认值为零(无限制 - 匹配整个捕获的缓冲区)。
- patterns
(repeated config.common.matcher.v3.HttpGenericBodyMatch.GenericTextMatch, REQUIRED) 要匹配的模式列表。
config.common.matcher.v3.HttpGenericBodyMatch.GenericTextMatch
[config.common.matcher.v3.HttpGenericBodyMatch.GenericTextMatch proto]
{
"string_match": ...,
"binary_match": ...
}
- string_match
(string) 要定位在 HTTP 主体中的文本字符串。
必须设置 string_match、binary_match 中的其中一个。
- binary_match
(bytes) 要定位在 HTTP 主体中的字节序列。
必须设置 string_match、binary_match 中的其中一个。