2.6 KiB
2.6 KiB
Configurable Route Table - Route Resolution Engine
Module
Gateway
Status
VERIFIED
Description
The Gateway includes a StellaOpsRouteResolver that maps incoming HTTP request paths to configured StellaOpsRoute entries. Uses first-match-wins ordering. Supports both prefix matching (case-insensitive PathString.StartsWith) and compiled regex matching (IsRegex = true). Excludes NotFoundPage and ServerErrorPage routes from path resolution (these are handled separately by ErrorPageFallbackMiddleware). Returns null for no match, allowing fallthrough to the existing Microservice pipeline.
Implementation Details
- Modules:
src/Router/StellaOps.Gateway.WebService/ - Key Classes:
StellaOpsRouteResolver(src/Router/StellaOps.Gateway.WebService/Routing/StellaOpsRouteResolver.cs) - First-match-wins resolver with prefix and regex supportRouteDispatchMiddleware(src/Router/StellaOps.Gateway.WebService/Middleware/RouteDispatchMiddleware.cs) - Calls resolver, dispatches to handler based on route typeProgram.cs(src/Router/StellaOps.Gateway.WebService/Program.cs) - RegistersStellaOpsRouteResolveras singleton in DI
- Tests:
StellaOpsRouteResolverTests(src/Router/__Tests/StellaOps.Gateway.WebService.Tests/Routing/StellaOpsRouteResolverTests.cs) - 9 unit tests (exact match, prefix, regex, no match, first-match-wins, excluded error types, case-insensitive, empty)RouteTableIntegrationTests(src/Router/__Tests/StellaOps.Gateway.WebService.Tests/Integration/RouteTableIntegrationTests.cs) - 2 route resolution integration tests
E2E Test Plan
- Exact path match:
GET /favicon.icoresolves to StaticFile route (returns file content) - Prefix match:
GET /app/index.htmlresolves to StaticFiles route (serves directory file) - Regex match:
GET /api/v2/dataresolves to ReverseProxy route with pattern^/api/v[0-9]+/.* - No match fallthrough:
GET /unmatched/pathreturns 404 (falls through to Microservice pipeline) - First-match-wins: when multiple routes could match, first configured route takes precedence
- Case-insensitive:
GET /APP/index.htmlresolves to/appStaticFiles route
Verification
- Run ID: run-001
- Date: 2026-02-12
- Method: Tier 0 source verification + Tier 1 build/code review (224/224 tests pass) + Tier 2a live HTTP API testing
- Build: PASS (0 errors, 0 warnings)
- Tests: PASS (224/224 Gateway tests pass)
- Tier 2a Evidence:
docs/qa/feature-checks/runs/gateway/configurable-route-table-route-resolver/run-001/tier2-api-check.json - Verdict: PASS