Envoi d'une requête HTTP

Rust:
Envoi d'une requête HTTP

How to: (Comment faire :)

On va utiliser reqwest, une bibliothèque Rust populaire. Ajoutez d’abord reqwest à votre Cargo.toml:

[dependencies]
reqwest = "0.11"
tokio = { version = "1", features = ["full"] }

Puis, envoyez une requête GET simple :

use reqwest;
use tokio;

#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {
    let response = reqwest::get("http://www.example.com").await?;
    
    println!("Status: {}", response.status());
    println!("Headers:\n{:#?}", response.headers());

    let body = response.text().await?;
    println!("Body:\n{}", body);

    Ok(())
}

Sortie attendue (en fonction du contenu actuel de example.com) :

Status: 200 OK
Headers:
{
    "content-type": "text/html; charset=UTF-8",
    // ...
}
Body:
<!doctype html>
...

Deep Dive (Plongée en profondeur)

L’envoi de requêtes HTTP est un concept vieux comme le web lui-même. Avant reqwest, Rust utilisait hyper, toujours utilisé en sous-main par reqwest pour le traitement HTTP bas-niveau. Des alternatives à reqwest incluent hyper pour plus de contrôle et surf pour un environnement async runtime-agnostique. L’implémentation consiste à établir une connexion TCP avec le serveur, envoyer une requête formatée selon la spécification HTTP et interpréter la réponse.

See Also (Voir aussi)