spring-cloud/spring-cloud-gateway

Create a Glob Path Predicate

Open

#246 opened on 2018年3月25日

GitHub で見る
 (5 comments) (0 reactions) (0 assignees)Java (3,204 forks)batch import
enhancementhelp wanted

Repository metrics

Stars
 (4,284 stars)
PR merge metrics
 (平均マージ 1d 21h) (30d で 18 merged PRs)

説明

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.

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