Créer un serveur web basique en Rust avec Rocket

Apprenez à créer un serveur web basique en Rust avec le framework Rocket. Un guide pratique pour installer, configurer et lancer vos premières routes HTTP de manière simple et rapide.

Article publié le 02/09/2025, dernière mise à jour le 03/09/2025

Rust est réputé pour sa sécurité, ses performances et sa fiabilité. Mais est-ce que vous savez qu’il est également possible de créer des applications web en Rust?

Parmi les frameworks disponibles, Rocket est l’un des plus récents et des plus simples, car il permet de démarrer rapidement un serveur web en quelques lignes !

Créer un projet avec Cargo

Avant tout, assurez-vous d’avoir Rust et Cargo installés sur votre machine.

Si ce n’est pas le cas, suivez notre article pour débuter avec Rust : https://code-garage.com/blog/debuter-avec-rust-installer-et-executer-un-programme

Ensuite, il vous suffit de créer un nouveau projet avec la commande suivante :

cargo new basic-web-server
cd basic-web-server

Ajoutez ensuite Rocket et Serde (pour la sérialisation de données) dans votre fichier Cargo.toml :

[dependencies]
rocket = "0.5.0"
serde = { version = "1.0", features = ["derive"] }

Nous sommes maintenant prêts à créer notre serveur !

Un premier serveur minimaliste

Créer un serveur web est d’une simplicité déconcertante, voilà le plus petit exemple possible :

#[macro_use] extern crate rocket;

#[get("/")]
fn index() -> String {
    String::from("Web server is running!")
}

#[launch]
fn rocket() -> _ {
    rocket::build().mount("/", routes![index])
}

Ici :

  • On définit une route "/" accessible via HTTP GET.
  • La fonction index renvoie une simple chaîne de caractères.
  • Le serveur est lancé avec rocket::build() et #[launch].

Il vous suffit de lancer le serveur avec cargo run, et voilà !

Résultat : si vous ouvrez http://localhost:8000, vous verrez apparaître "Web server is running!".

Passer des paramètres à une route

Rocket devient vraiment intéressant quand on veut personnaliser les réponses. On peut, par exemple, créer une route qui salue l’utilisateur en fonction de son nom :

#[macro_use] extern crate rocket;

#[get("/hello/<name>")]
fn hello_name(name: &str) -> String {
    format!("Hello, {}!", name)
}

#[launch]
fn rocket() -> _ {
    rocket::build().mount("/", routes![hello_name])
}

Avec ce code, si vous tapez dans votre navigateur http://localhost:8000/hello/Alice, le serveur vous répondra : "Hello, Alice!"

Rocket se charge automatiquement d’extraire le paramètre <name> de l’URL et de le passer à votre fonction.

Retourner du JSON

Dans le monde réel, les API renvoient largement du format JSON et Rocket supporte cela nativement grâce au module serde.

Voici un exemple simple qui renvoie une réponse JSON :

#[macro_use] extern crate rocket;
use rocket::serde::{Serialize, json::Json};

#[derive(Serialize)]
struct Message<'r> {
    text: &'r str,
}

#[get("/json")]
fn hello_json() -> Json<Message<'static>> {
    Json(Message { text: "Hello, JSON!" })
}

#[launch]
fn rocket() -> _ {
    rocket::build().mount("/", routes![hello_json])
}

Cette fois, accéder à http://localhost:8000/json renverra :

{
  "text": "Hello, JSON!"
}

En résumé

Rocket est idéal pour découvrir le développement web en Rust, en quelques lignes de code, vous pouvez :

  • démarrer un serveur,
  • créer des routes dynamiques,
  • servir du JSON.

Que vous vouliez apprendre Rust ou bâtir des applications web performantes, Rocket vous montre que c’est possible.

Retrouvez la documentation officielle de Rocket juste ici : https://rocket.rs/


Vous avez terminé l'article ?

Commentaires (0)

pour laisser un commentaire

Aucun commentaire pour l'instant