spring-cloud/spring-cloud-gateway

Create a Glob Path Predicate

オープン

#246 opened on 2018/03/25

 (5 件のコメント) (0 件のリアクション) (0 人の担当者)Java (3,204 件のフォーク)batch import
enhancementhelp wanted

Repository metrics

Stars
 (4,284 個のスター)
PR merge metrics
 (PR metrics pending)

説明

The documentation for the path predicate states that:

The Path Route Predicate Factory takes one parameter: a Spring PathMatcher pattern.

However, instead of the PathMatcher, the PathRoutePredicateFactory seems to be using a PathPatternParser which then fails to match on an AntPathMatcher match (Spring URI matching is documented here and explicitly mentions GLOB matching):

    matcher = new AntPathMatcher();
    assertTrue(matcher.match("/**/trigger", "/foo/bar/trigger"));

while the above works, this doesn't:

        .route(r ->
            r.path("/**/trigger")
              .filters(f -> f.filter(filter))
              .uri("http://localhost:9052")
        )

This prevents us from routing requests matching on GLOBs (and manually matching on every possible variation of the URL pattern would be tedious; hard to maintain; and error-prone).

Alternatively, consider adding a globPath predicate.

PS - AFAICT configuring match predicates via the YAML configuration does NOT seem to work.

コントリビューターガイド