spring-cloud/spring-cloud-gateway

Create a Glob Path Predicate

Open

#246 建立於 2018年3月25日

在 GitHub 查看
 (5 留言) (0 反應) (0 負責人)Java (3,204 fork)batch import
enhancementhelp wanted

倉庫指標

Star
 (4,284 star)
PR 合併指標
 (平均合併 1天 21小時) (30 天內合併 18 個 PR)

描述

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.

貢獻者指南