spring-cloud / spring-cloud/spring-cloud-gateway
Create a Glob Path Predicate
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 4.9k
- Forks
- 3.5k
- Avg merge
- 20h 57m
- Merged PRs (30d)
- 8
Description
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.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with PathRoutePredicateFactory and compare its current pattern handling with the documented AntPathMatcher behavior. Reproduce the /**/trigger example, then inspect how predicates are configured through YAML. Done means glob-style path routing works for the reported pattern and the supported configuration path is covered.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, spring
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100