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

  1. Use type-safe routing
  2. Handle errors properly
  3. Use middleware
  4. Test endpoints
  5. Document APIs

Conclusion

Build fast and safe APIs with Rust and Axum! 🦀