Rust:
Отправка HTTP-запроса
Как:
Чтобы отправить GET-запрос в Rust, мы используем крейт reqwest. Сначала добавьте его в ваш Cargo.toml:
[dependencies]
reqwest = "0.11"
tokio = { version = "1", features = ["full"] }Теперь набросаем асинхронный код на Rust:
use reqwest;
use tokio;
#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {
let response_text = reqwest::get("https://api.example.com/data")
.await?
.text()
.await?;
println!("Ответ: {}", response_text);
Ok(())
}Пример вывода может выглядеть так:
Ответ: {"key": "value", "hello": "world"}Вот и всё, что нужно, чтобы обратиться к конечной точке с GET-запросом!
Подробнее
HTTP-запросы стары как мир в интернет-летах. Они являются основой веб-коммуникации. Rust использует крейты, такие как reqwest, поскольку он не является языком, специфичным для веба – гибкость ключевая. reqwest создан на основе hyper, который быстр и низкоуровнев, но reqwest добавляет сверху удобство использования.
Альтернативы reqwest? Конечно. hyper для тех, кто ищет скорость, surf, если вам нравится асинхронный Rust, или ureq для простоты – без необходимости заниматься асинхронными операциями.
Под капотом, когда вы отправляете HTTP-запрос, Rust делает почти то же, что и любой другой язык: устанавливает TCP-соединение, отправляет форматированный HTTP-запрос и интерпретирует сырой ответ. Асинхронная обработка этих запросов – это то, где Rust действительно блестит, позволяя вам делать другие вещи, пока вы ждёте ответа сервера.