Skip to main content

build_router

Function build_router 

Source
pub fn build_router(state: AppState) -> Router
Expand description

Assembles every route module into one [axum::Router], ready to serve or to drive directly in a test via tower::ServiceExt::oneshot.

Alongside the JSON API routes, this mounts the OpenAPI contract itself two ways: the raw document at GET /api/openapi.json (for tooling – CI’s spec-diff gate, and the generated frontend/ TS client) and an interactive Scalar UI at /api/docs (for a human exploring the API in a browser). [utoipa_scalar::Scalar::with_url] returns a state-generic axum::Router<S> with the UI’s one route already attached, so it merges in directly rather than needing its own handler function.

Everything that isn’t one of those routes falls through to [spa::static_handler], which serves the built React SPA – so this one router is the whole HTTP surface of a real bhtune-server deployment, API and UI alike. None of the merged sub-routers set their own fallback (axum panics if two merged routers each declare one), so this is the only place .fallback is called.