Axum Rust : guide complet avec exemples et tutoriel

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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

Recommendations