Spring Cloud Gateway匹配多个路径元素

时间:2019-01-25 07:55:14

标签: spring-cloud-gateway

Spring Cloud Greenwich将spring-cloud-netflix-zuul置于维护模式,因此我正尝试从Zuul迁移到Spring Cloud Gateway。

有了Zuul,我有一条类似的路线

zuul:
  routes:
    masterplan_match:
      path: /**/masterplans/**
      serviceId: api-masterplan

我在这里所做的基本上是忽略接收路径中masterplan之前或之后的所有内容,然后重定向到api-masterplan。例如,/some/path/to/masterplans/masterplans都使用相同的api(原因是masterplans是较大实体的子资源,该实体负责创建新的masterplans,但是那么masterplans可以被视为完全消耗的资源,例如用于GET设置详细信息,更新和删除)。

我可以将此配置映射到Spring Cloud Gateway吗?从predicates来看,可行的似乎是path predicate,但是看起来所有匹配器都在单个路径元素上工作(WildcardTheRestPathElement除外,但该路径元素只能用作最后一个元素-我认为),即:我需要写类似

spring
    cloud:
      gateway:
        routes:
        - id: masterplan_match
          uri: lb://api-masterplan # Coming from discovery client
          predicates:
          - Path=/some/path/to/masterplans/**, /masterplans/**

我丢失了什么东西吗,两条路径可以汇聚成一个吗?

1 个答案:

答案 0 :(得分:0)

Spring Cloud Gateway 自 { "kind": "Pod", "apiVersion": "v1", "metadata": { "name": "nginx", "creationTimestamp": null, "labels": { "run": "nginx" } }, "spec": { "containers": [ { "name": "nginx", "image": "nginx", "resources": {} } ], "restartPolicy": "Always", "dnsPolicy": "ClusterFirst" }, "status": {} } 版本起支持多种模式

2.1.0

另见:

Add support for multiple paths in path predicate #256

Multiple patterns in Host Route Predicate #589