Axum is a modern web framework for Rust. Here’s how to build your first API.
Setup
[dependencies]
axum = "0.7"
tokio = { version = "1", features = ["full"] }
serde = { version = "1.0", features = ["derive"] }
Basic Server
use axum::{Router, routing::get, Json};
#[tokio::main]
async fn main() {
let app = Router::new()
.route("/", get(handler));
axum::Server::bind(&"0.0.0.0:3000".parse().unwrap())
.serve(app.into_make_service())
.await
.unwrap();
}
async fn handler() -> Json<serde_json::Value> {
Json(serde_json::json!({"message": "Hello, World!"}))
}
Routes
let app = Router::new()
.route("/users", get(get_users))
.route("/users/:id", get(get_user));
JSON Handling
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct User {
id: u32,
name: String,
}
async fn create_user(Json(user): Json<User>) -> Json<User> {
Json(user)
}
Best Practices
- Use type-safe routing
- Handle errors properly
- Use middleware
- Test endpoints
- Document APIs
Conclusion
Build fast and safe APIs with Rust and Axum! 🦀