Qu'est-ce qu'Axum et pourquoi l'utiliser ?
Axum est un framework web moderne, ergonomique et performant pour le langage Rust, développé par l'équipe Tokio. Il est construit sur les célèbres crates tokio, tower et hyper, garantissant des performances élevées et une asynchronie prête à l'emploi.
L'objectif principal d'Axum est d'offrir aux développeurs une API intuitive pour créer des applications web et des API, tout en conservant toute la puissance et la sécurité de Rust. Contrairement aux solutions plus "bas niveau", Axum abstrait la complexité du protocole HTTP, vous permettant de vous concentrer sur la logique métier.
Axum est idéal pour :
- Créer des API RESTful et des microservices
- Développer des applications web avec rendu côté serveur
- Construire des serveurs proxy et des middlewares
- Implémenter des connexions WebSocket
- Tout scénario nécessitant des performances et une fiabilité élevées
Installation d'Axum
Comme Rust est un langage compilé, l'installation se fait via le gestionnaire de paquets Cargo. Ajoutez les dépendances suivantes dans votre fichier Cargo.toml :
[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"
Exécutez ensuite la commande cargo build pour télécharger et compiler les dépendances.
Démarrage rapide : votre première application Axum
Créez un fichier src/main.rs et écrivez un serveur HTTP simple :
use axum::{
routing::get,
Router,
};
use std::net::SocketAddr;
#[tokio::main]
async fn main() {
// Création du routeur
let app = Router::new()
.route("/", get(root_handler))
.route("/hello/:name", get(hello_handler));
// Lancement du serveur
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
println!("Serveur démarré sur {}", addr);
axum::Server::bind(&addr)
.serve(app.into_make_service())
.await
.unwrap();
}
async fn root_handler() -> &'static str {
"Bienvenue sur la page d'accueil !"
}
async fn hello_handler(axum::extract::Path(name): axum::extract::Path) -> String {
format!("Bonjour, {} !", name)
}
Lancez le serveur avec la commande cargo run et ouvrez votre navigateur à l'adresse http://localhost:3000/hello/Monde.
Méthodes et fonctions essentielles d'Axum
1. Router::new()
Description : Crée un nouveau routeur vide. C'est le point d'entrée principal pour configurer votre application.
Paramètres : Aucun.
Exemple :
use axum::Router;
let app: Router = Router::new();
2. Router::route()
Description : Ajoute une route au chemin spécifié avec la méthode HTTP et le gestionnaire donnés.
Paramètres :
path: &str— le chemin de la route (peut contenir des segments dynamiques, ex./users/:id)method_router: MethodRouter— le résultat de l'appel àget(),post(),put(),delete(), etc.
Exemple :
use axum::{routing::get, Router};
async fn users_list() -> &'static str { "Liste des utilisateurs" }
async fn create_user() -> &'static str { "Création d'un utilisateur" }
let app = Router::new()
.route("/users", get(users_list).post(create_user));
3. routing::get(), post(), put(), delete()
Description : Crée un gestionnaire pour la méthode HTTP correspondante.
Paramètres :
handler: Handler— une fonction asynchrone qui traite la requête
Aussi dans la bibliothèque
Client HTTP pour Go (Golang) : top bibliothèques pour travailler avec HTTP
Rate Limiting en TypeScript : bibliothèques, stratégies et exemples
Surveillance des applications Go : bibliothèques et outils
Client Elasticsearch pour Swift (iOS/macOS) — guide complet
Envoi d'Email en C# (.NET) avec SmtpClient et MailKit