Skicka en http-förfrågan

Rust:
Skicka en http-förfrågan

Hur gör man:

// Lägg till biblioteket reqwest i Cargo.toml
// reqwest = "0.11"

use reqwest;
use std::error::Error;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let url = "http://httpbin.org/get";
    
    // Skicka GET-förfrågan och få ett svar
    let res = reqwest::get(url).await?;
    
    // Skriv ut statuskoden och svaret
    println!("Status: {}", res.status());
    println!("Headers:\n{:#?}", res.headers());
    
    // Omvandla svaret till text
    let body = res.text().await?;
    println!("Body:\n{}", body);

    Ok(())
}

Exempel på output:

Status: 200 OK
Headers:
{
    "content-type": "application/json",
    ...
}
Body:
{
    "args": {},
    "headers": {
        ...
    },
    ...
}

Fordjupning

Historiskt sett har HTTP-förfrågningar varit själva grunden för webben, möjliggörande kommunikation mellan klienter och servrar sedan tidigt 90-tal. Alternativ till Rusts reqwest-bibliotek inkluderar hyper, som är en lägre nivås HTTP-implementation, och surf, en annan enkel, minimalistisk klient. reqwest använder hyper under huven och är synkroniserad med tokio, vilket ger asynkron I/O och tillåter skalbar och icke-blockerande kommunikation, lämplig i moderna applikationer som kräver hög prestanda.

Se även