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 действительно блестит, позволяя вам делать другие вещи, пока вы ждёте ответа сервера.