Actix-web pour Rust : guide complet avec exemples

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'Actix-web et pourquoi en a-t-on besoin ?

\n\n

Actix-web est un framework web puissant, pragmatique et extrêmement rapide pour le langage de programmation Rust. Il est construit sur la base du modèle d'acteurs (bibliothèque Actix) et du runtime asynchrone Tokio. Actix-web permet de créer des applications web et des API haute performance capables de traiter des millions de requêtes par seconde.

\n\n

Pourquoi utiliser Actix-web ?

\n
    \n
  • Performance : Actix-web fait régulièrement partie des trois frameworks web les plus rapides au monde (selon les tests TechEmpower), devançant des solutions comme Go net/http et Node.js Express.
  • \n
  • Sécurité : Rust garantit la sécurité mémoire à la compilation, éliminant des classes entières de vulnérabilités (dépassement de tampon, conditions de concurrence).
  • \n
  • Sécurité des types : Grâce au système de types strict de Rust, de nombreuses erreurs (par exemple, un format JSON incorrect) sont détectées à la compilation.
  • \n
  • Asynchrone : Le support complet d'async/await permet de traiter des milliers de connexions simultanées sans créer un thread pour chacune.
  • \n
  • Écosystème : Actix-web s'intègre facilement avec d'autres crates Rust : serde (sérialisation), sqlx/diesel (bases de données), reqwest (client HTTP).
  • \n
\n\n

Actix-web est idéal pour : les API REST, les microservices, les serveurs WebSocket, les applications web à forte charge, les serveurs proxy.

\n\n

Installation d'Actix-web

\n\n

Comme Actix-web est une bibliothèque pour Rust, l'installation se fait via le gestionnaire de paquets cargo (équivalent de pip pour Python).

\n\n

Étape 1. Assurez-vous d'avoir Rust installé. Vérifiez avec la commande :

\n
rustc --version\ncargo --version
\n

Si Rust n'est pas installé, téléchargez-le depuis rustup.rs.

\n\n

Étape 2. Créez un nouveau projet :

\n
cargo new my_actix_app\ncd my_actix_app
\n\n

Étape 3. Ajoutez Actix-web aux dépendances. Ouvrez le fichier Cargo.toml et ajoutez :

\n
[dependencies]\nactix-web = "4"
\n\n

Étape 4. Installez les dépendances et compilez le projet :

\n
cargo build
\n\n

Terminé ! Vous pouvez maintenant utiliser Actix-web dans votre projet.

\n\n

Démarrage rapide : "Hello, World!" avec Actix-web

\n\n

Créons un serveur web très simple qui répond aux requêtes GET.

\n\n

Exemple 1 : Serveur minimal

\n
// main.rs\nuse actix_web::{get, App, HttpResponse, HttpServer, Responder};\n\n#[get("/")]\nasync fn hello() -> impl Responder {\n    HttpResponse::Ok().body("Hello, World!")\n}\n\n#[actix_web::main]\nasync fn main() -> std::io::Result<()> {\n    HttpServer::new(|| {\n        App::new()\n            .service(hello)\n    })\n    .bind(("127.0.0.1", 8080))?\n    .run()\n    .await\n}
\n\n

Lancement : cargo run

\n

Vérification : Ouvrez le navigateur à l'adresse http://127.0.0.1:8080 ou exécutez :

\n
curl http://127.0.0.1:8080
\n

Vous verrez la réponse : Hello, World!

\n\n

Méthodes et fonctions principales d'Actix-web

\n\n

Examinons les éléments clés du framework. Pour chacun, une description, les paramètres et un exemple fonctionnel sont fournis.

\n\n

1. #[get("/path")] — macro pour traiter les requêtes GET

\n

Ce qu'elle fait : Décore une fonction asynchrone, la transformant en gestionnaire de requêtes HTTP GET pour le chemin spécifié.

\n

Paramètres : Chemin (chaîne), peut contenir des segments dynamiques (par exemple, /{id}).

\n

Exemple :

\n
use actix_web::{get, HttpResponse, Responder};\n\n#[get("/user/{id}")]\nasync fn get_user(path: actix_web::web::Path<String>) -> impl Responder {\n    let user_id = path.into_inner();\n    HttpRespons                    

Recommendations