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 vonget(),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
Auch in der Bibliothek
Verarbeitung und Parsing von Markdown in PHP: Bibliotheken und Beispiele
Bildverarbeitung in Node.js: resize, crop mit Sharp und Jimp
SignalR C# (.NET): Komplettleitfaden mit Praxisbeispielen
E-Mail-Versand in Java: Vollständiger Leitfaden zu JavaMail und Jakarta Mail