结构匹配器(proto)

type.matcher.v3.StructMatcher

[type.matcher.v3.StructMatcher proto]

StructMatcher 提供了一个通用接口来检查给定值是否在 google.protobuf.Struct 中匹配。它使用 path 从结构中检索值,然后检查它是否与指定值匹配。

例如,对于以下结构

fields:
  a:
    struct_value:
      fields:
        b:
          struct_value:
            fields:
              c:
                string_value: pro
        t:
          list_value:
            values:
              - string_value: m
              - string_value: n

以下 MetadataMatcher 匹配,因为路径 [a, b, c] 将从 Metadata 中检索字符串值“pro”,该值与指定的前缀匹配匹配。

path:
- key: a
- key: b
- key: c
value:
  string_match:
    prefix: pr

以下 StructMatcher 匹配,因为代码将匹配路径 [a, t] 处列表中的一个字符串值。

path:
- key: a
- key: t
value:
  list_match:
    one_of:
      string_match:
        exact: m

StructMatcher 的一个使用示例是匹配 envoy.v*.core.Node 中的元数据。

{
  "path": [],
  "value": {...}
}
path

(repeated type.matcher.v3.StructMatcher.PathSegment, REQUIRED) 从结构中检索值的路径。

value

(type.matcher.v3.ValueMatcher, REQUIRED) 如果通过路径检索的值与该值匹配,则 StructMatcher 匹配。

type.matcher.v3.StructMatcher.PathSegment

[type.matcher.v3.StructMatcher.PathSegment proto]

指定从结构中检索值的路径中的段。

{
  "key": ...
}
key

(string, REQUIRED) 如果指定,使用键在结构中检索值。