Сбой облачного шлюза Путь Маршрут Предикат не найден - PullRequest
0 голосов
/ 04 февраля 2020

В следующей конфигурации весеннего облачного шлюза я пытаюсь сопоставить концы пути с /favicon.ico, но он не может соответствовать пути: /gitBooks/100/abc/favicon.ico

spring:
  cloud:
    gateway:
      routes:
        - id: favicon
          uri: forward:///favicon.ico
          predicates:
            - Path=**/favicon.ico

весенний облачный шлюз печатает следующий журнал:

2020-02-04 22:57:35.703 TRACE 28356 --- [ctor-http-nio-2] o.s.c.g.h.p.RoutePredicateFactory        : Pattern "[**/favicon.ico]" does not match against value "/gitBooks/100/abc/favicon.ico"
2020-02-04 22:57:35.703 TRACE 28356 --- [ctor-http-nio-2] o.s.c.g.h.RoutePredicateHandlerMapping   : No RouteDefinition found for [Exchange: GET http://localhost:8080/gitBooks/100/abc/favicon.ico]

Я не понимаю, и мне интересно, как написать предиктор пути для соответствия путям с favicon.ico

1 Ответ

0 голосов
/ 07 февраля 2020

Я не знаю, почему PathMatcher не работает, наконец я написал настроенный Предикат:

spring:
  cloud:
    gateway:
      routes:
        - id: favicon
          uri: forward:///favicon.ico
          predicates:
            - Favicon=
@Component
public class FaviconRoutePredicateFactory extends AbstractRoutePredicateFactory<FaviconRoutePredicateFactory.Config> {
    private static final Log log = LogFactory.getLog(FaviconRoutePredicateFactory.class);


    public FaviconRoutePredicateFactory() {
        super(Config.class);
    }

    @Override
    public Predicate<ServerWebExchange> apply(Config config) {
        return exchange -> {
            String path = exchange.getRequest().getURI().getRawPath();
            return !path.equals("/favicon.ico") && path.endsWith("favicon.ico");
        };
    }

    public static class Config {
    }
}
...