统一匹配器 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_listmatcher_tree 中的其中一个。

matcher_tree

(config.common.matcher.v3.Matcher.MatcherTree) 要评估的匹配树。

必须设置 matcher_listmatcher_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,此匹配器也被认为未匹配。

必须设置 matcheraction 中的其中一个。

action

(config.core.v3.TypedExtensionConfig) 要执行的协议特定操作。

必须设置 matcheraction 中的其中一个。

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_predicateor_matcherand_matchernot_matcher 中的其中一个。

or_matcher

(config.common.matcher.v3.Matcher.MatcherList.Predicate.PredicateList) 要进行 OR 操作的谓词列表。

必须设置 single_predicateor_matcherand_matchernot_matcher 中的其中一个。

and_matcher

(config.common.matcher.v3.Matcher.MatcherList.Predicate.PredicateList) 要进行 AND 操作的谓词列表。

必须设置 single_predicateor_matcherand_matchernot_matcher 中的其中一个。

not_matcher

(config.common.matcher.v3.Matcher.MatcherList.Predicate) 谓词的反转

必须设置 single_predicateor_matcherand_matchernot_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_matchcustom_match 中的其中一个。

custom_match

(config.core.v3.TypedExtensionConfig) 用于自定义匹配逻辑的扩展。

必须设置 value_matchcustom_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_mapprefix_match_mapcustom_match 中的其中一个。

prefix_match_map

(config.common.matcher.v3.Matcher.MatcherTree.MatchMap) 最长的匹配前缀获胜。

要查找输入值的精确匹配或前缀匹配映射。如果查找成功,则匹配被认为成功,并且使用相应的 OnMatch。

必须设置 exact_match_mapprefix_match_mapcustom_match 中的其中一个。

custom_match

(config.core.v3.TypedExtensionConfig) 用于自定义匹配逻辑的扩展。

要查找输入值的精确匹配或前缀匹配映射。如果查找成功,则匹配被认为成功,并且使用相应的 OnMatch。

必须设置 exact_match_mapprefix_match_mapcustom_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_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

and_match

(config.common.matcher.v3.MatchPredicate.MatchSet) 描述逻辑 AND 的集合。如果集合中的所有成员都匹配,则匹配配置匹配。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

not_match

(config.common.matcher.v3.MatchPredicate) 否定匹配。如果否定匹配条件匹配,则匹配配置将匹配。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

any_match

(bool) 匹配配置将始终匹配。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

http_request_headers_match

(config.common.matcher.v3.HttpHeadersMatch) HTTP 请求头匹配配置。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

http_request_trailers_match

(config.common.matcher.v3.HttpHeadersMatch) HTTP 请求尾部匹配配置。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

http_response_headers_match

(config.common.matcher.v3.HttpHeadersMatch) HTTP 响应头匹配配置。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

http_response_trailers_match

(config.common.matcher.v3.HttpHeadersMatch) HTTP 响应尾部匹配配置。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

http_request_generic_body_match

(config.common.matcher.v3.HttpGenericBodyMatch) HTTP 请求通用主体匹配配置。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

http_response_generic_body_match

(config.common.matcher.v3.HttpGenericBodyMatch) HTTP 响应通用主体匹配配置。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_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_matchbinary_match 中的其中一个。

binary_match

(bytes) 要定位在 HTTP 主体中的字节序列。

必须设置 string_matchbinary_match 中的其中一个。