use axum::extract::State; use axum_controller::*; struct ExampleController; async fn my_middleware( request: axum::extract::Request, next: axum::middleware::Next, ) -> axum::response::Response { next.run(request).await } async fn my_other_middleware( request: axum::extract::Request, next: axum::middleware::Next, ) -> axum::response::Response { next.run(request).await } #[derive(Clone, Debug)] struct AppState(); #[controller( path = "/asd", state = AppState, middleware=axum::middleware::from_fn(my_middleware), middleware=axum::middleware::from_fn(my_other_middleware), )] impl ExampleController { #[route(GET "/test")] async fn test_handler_fn(_: State) -> String { todo!("handle request") } #[route(GET "/test2")] async fn test_handler_fn2(State(_): State) -> String { todo!("handle request") } } fn main() { let _router = axum::Router::new().nest("/test", ExampleController.into_router(AppState())); }