Spring Cloud Gateway сопоставляет несколько элементов пути - PullRequest
0 голосов
/ 25 января 2019

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 ting details, обновление, удаление).

Можно ли сопоставить эту конфигурацию с Spring Cloud Gateway? Если посмотреть на предикаты , то, возможно, это будет предикат пути , но тогда все выглядит так, как будто все сопоставители работают с отдельными элементами пути (кроме WildcardTheRestPathElement, который, однако, может использоваться только как последний элемент - я думаю), то есть: мне нужно было бы написать что-то вроде

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

Я что-то упускаю и можно ли объединить два пути в один?

...