← ClaudeAtlas

axumlisted

Axum Rust web framework by Tokio. Covers routing, handlers, extractors, middleware, and state. Use for ergonomic async Rust APIs. USE WHEN: user mentions "axum", "tokio web", "rust async api", "tower middleware", asks about "axum extractors", "axum state", "axum router", "rust websocket axum", "hyper server", "ergonomic rust api" DO NOT USE FOR: Actix-web projects - use `actix-web` instead, Rocket projects - use `rocket` instead, Warp projects - use `warp` instead, non-Rust backends
claude-dev-suite/claude-dev-suite · ★ 33 · AI & Automation · score 80
Install: claude install-skill claude-dev-suite/claude-dev-suite
# Axum Core Knowledge > **Full Reference**: See [advanced.md](advanced.md) for authentication middleware, WebSocket handling, graceful shutdown, and custom error types. > **Deep Knowledge**: Use `mcp__documentation__fetch_docs` with technology: `axum` for comprehensive documentation. ## Basic Setup ```toml # Cargo.toml [dependencies] axum = "0.7" tokio = { version = "1", features = ["full"] } serde = { version = "1", features = ["derive"] } tower-http = { version = "0.5", features = ["cors", "trace"] } ``` ```rust use axum::{routing::get, Router}; async fn hello() -> &'static str { "Hello, World!" } #[tokio::main] async fn main() { let app = Router::new().route("/", get(hello)); let listener = tokio::net::TcpListener::bind("0.0.0.0:8080").await.unwrap(); axum::serve(listener, app).await.unwrap(); } ``` ## Routing ```rust let app = Router::new() .route("/", get(index)) .route("/users", get(list_users).post(create_user)) .route("/users/:id", get(get_user).put(update_user).delete(delete_user)); // Nested Routes let api_routes = Router::new() .route("/users", get(list_users)); let app = Router::new().nest("/api/v1", api_routes); ``` ## Extractors ```rust use axum::extract::{Path, Query, Json, State}; // Path parameters async fn get_user(Path(id): Path<u32>) -> String { format!("User {}", id) } // Query parameters #[derive(Deserialize)] struct Pagination { page: Option<u32>, per_page: Option<u32> } async fn list_users(Query(pagi