GEP-3965: HTTPRoute Implementation-Specific Matches¶
- Issue: #3965
- Status: Provisional
(See status definitions.)
TLDR¶
Add an implementation-specific match extension point to HTTPRoute.
This gives implementations a supported place for custom matching such as CEL, WASM, or other implementation-defined logic without trying to standardize those mechanisms in core Gateway API.
Goals¶
- Add a clear extension point for custom HTTP request matching.
- Keep the built-in
HTTPRoutematches portable and unchanged. - Avoid pushing custom matching into annotations or side APIs.
Non-Goals¶
- Standardize CEL, WASM, or any other custom matcher language.
- Replace existing
HTTPRoutematches. - Guarantee portability for implementation-specific matches.
Introduction¶
HTTPRoute has solid built-in matching for common cases: path, headers, query
params, and method. That covers the basics, but some implementations need more.
Examples include matching with CEL, WASM, or platform-specific request
attributes. Today there is no clean way to express that in HTTPRoute.
Implementations either rely on annotations or make users step outside the Route
API entirely.
This GEP proposes adding a narrow extension point for custom matching in
HTTPRoute. The exact API shape is intentionally left open for now, but a
reference-based mechanism such as extensionRef is the likely direction.
This also revisits GEP-820, which removed route match extension points because there were no concrete use cases at the time. We now have concrete use cases.
Purpose (Why and Who)¶
This is for implementations that already support richer matching and for users
who need it without giving up on HTTPRoute.
It also gives the project a cleaner answer than annotations. Core matches stay standard. Custom matches stay explicitly implementation-specific.
API¶
The exact API is left for a follow-up revision of this GEP.
The likely shape is an implementation-specific reference on HTTPRouteMatch,
or another narrowly scoped mechanism with the same effect.
Whatever shape we choose should:
- live next to existing HTTP matches
- make implementation-specific behavior explicit
- compose with existing match semantics
- fail clearly when the referenced matcher is unsupported
Conformance Details¶
No new conformance requirements are proposed in Provisional.
Any implementation-specific match mechanism would be outside core portability guarantees unless and until a specific part of it is standardized later.
Alternatives¶
Annotations¶
Easy to add, but opaque and inconsistent.
Standardize CEL or WASM directly¶
Too specific. The problem is the extension point, not the choice of engine.