Wires up all handlers into an Axum router
Wires up all handler functions into a complete Axum router with proper middleware ordering, path parameters, and state management. Use this when you need to integrate multiple handlers into a production-ready API with CORS, logging, timeouts, and health checks.
/plugin marketplace add claude-market/marketplace/plugin install claude-market-specforge-backend-rust-axum-specforge-backend-rust-axum@claude-market/marketplacehaikuYou create the main Axum router by wiring together all handler functions with their routes.
Given:
Generate the router configuration.
use axum::{
routing::{get, post, put, delete},
Router,
};
mod handlers;
use handlers::{users, orders};
pub fn create_router(state: AppState) -> Router {
Router::new()
// Health checks
.route("/health", get(health_check))
.route("/ready", get(readiness_check))
// API routes
.route("/api/users",
get(users::list_users)
.post(users::create_user))
.route("/api/users/:id",
get(users::get_user)
.put(users::update_user)
.delete(users::delete_user))
.route("/api/orders",
get(orders::list_orders)
.post(orders::create_order))
// Middleware
.layer(create_cors())
.layer(create_trace_layer())
.layer(axum::middleware::from_fn(correlation_id_middleware))
// State
.with_state(state)
}
When multiple handlers share the same path:
.route("/api/users",
get(list_users)
.post(create_user))
Use :param syntax:
.route("/api/users/:id", get(get_user))
.route("/api/users/:id/orders", get(get_user_orders))
Apply middleware in this order (bottom to top execution):
.layer(create_cors()) // CORS headers
.layer(create_trace_layer()) // Request logging
.layer(timeout_middleware) // Timeouts
.layer(correlation_id_middleware) // Correlation IDs
.layer(rate_limiter) // Rate limiting
axum-patterns - Router and middleware patternsaxum-middleware - Middleware configurationaxum-tracing - Correlation ID middlewareaxum-health-shutdown - Health check endpoints