Axum Rust: Vollständiges Tutorial mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist Axum und warum braucht man es?

Axum ist ein modernes, ergonomisches und leistungsstarkes Webframework für die Programmiersprache Rust, entwickelt vom Tokio-Team. Es basiert auf den beliebten Crates tokio, tower und hyper und bietet so von Haus aus hohe Performance und asynchrone Verarbeitung.

Das Hauptziel von Axum ist es, Entwicklern eine intuitive API zur Erstellung von Webanwendungen und APIs zu bieten, ohne dabei auf die Leistungsfähigkeit und Sicherheit von Rust verzichten zu müssen. Im Gegensatz zu "niedrigschwelligeren" Lösungen abstrahiert Axum die Komplexität des HTTP-Protokolls, sodass du dich auf deine Geschäftslogik konzentrieren kannst.

Axum eignet sich ideal für:

  • Erstellung von RESTful APIs und Microservices
  • Entwicklung von Webanwendungen mit Server-Side Rendering
  • Aufbau von Proxy-Servern und Middleware
  • Implementierung von WebSocket-Verbindungen
  • Alle Szenarien, die hohe Leistung und Zuverlässigkeit erfordern

Axum installieren

Da Rust eine kompilierte Sprache ist, erfolgt die Installation über den Paketmanager Cargo. Füge folgende Abhängigkeiten in deine Cargo.toml ein:

[dependencies]
axum = "0.7"
tokio = { version = "1", features = ["full"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tower-http = { version = "0.5", features = ["cors", "trace"] }
tracing = "0.1"
tracing-subscriber = "0.3"

Führe anschließend cargo build aus, um die Abhängigkeiten herunterzuladen und zu kompilieren.

Schnellstart: Deine erste Axum-App

Erstelle eine Datei src/main.rs und schreibe einen einfachen HTTP-Server:

use axum::{
    routing::get,
    Router,
};
use std::net::SocketAddr;

#[tokio::main]
async fn main() {
    // Router erstellen
    let app = Router::new()
        .route("/", get(root_handler))
        .route("/hello/:name", get(hello_handler));

    // Server starten
    let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
    println!("Server läuft auf {}", addr);
    
    axum::Server::bind(&addr)
        .serve(app.into_make_service())
        .await
        .unwrap();
}

async fn root_handler() -> &'static str {
    "Willkommen auf der Startseite!"
}

async fn hello_handler(axum::extract::Path(name): axum::extract::Path) -> String {
    format!("Hallo, {}!", name)
}

Starte den Server mit cargo run und öffne im Browser http://localhost:3000/hello/Welt.

Wichtige Methoden und Funktionen von Axum

1. Router::new()

Beschreibung: Erstellt einen neuen, leeren Router. Dies ist der zentrale Einstiegspunkt für die Konfiguration deiner Anwendung.

Parameter: Keine.

Beispiel:

use axum::Router;

let app: Router = Router::new();

2. Router::route()

Beschreibung: Fügt eine Route mit einem bestimmten HTTP-Methoden-Handler und Pfad hinzu.

Parameter:

  • path: &str — Der Pfad der Route (kann dynamische Segmente enthalten, z.B. /users/:id)
  • method_router: MethodRouter — Das Ergebnis von get(), post(), put(), delete() usw.

Beispiel:

use axum::{routing::get, Router};

async fn users_list() -> &'static str { "Benutzerliste" }
async fn create_user() -> &'static str { "Benutzer erstellen" }

let app = Router::new()
    .route("/users", get(users_list).post(create_user));

3. routing::get(), post(), put(), delete()

Beschreibung: Erstellen einen Handler für die entsprechende HTTP-Methode.

Parameter:

  • handler: Handler — Eine asynchrone Funktion, die die Anfrage verarbeitet

Empfehlungen