Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpHtHd 245 of 288 menu
◀ ▶

Заголовки запроса в Rust

Кроме адреса запрос несет заголовки: короткие пары имя и значение. Их задают в цепочке до отправки. Заголовки ответа читают из объекта ответа после успешной отправки.

Один объект клиента можно переиспользовать для многих запросов. Заголовок на отдельном запросе не меняет настройки клиента для следующих обращений.

Попросим ответ в виде простого текста:

#[tokio::main] async fn main() { let client = reqwest::Client::new(); let url = "https://example.com"; match client .get(url) .header("accept", "text/plain") .send() .await { Ok(resp) => { match resp.headers().get("content-type") { Some(v) => match v.to_str() { Ok(s) => println!("{}", s), Err(_) => println!("bad header"), }, None => println!("no type"), } if let Err(e) = resp.text().await { println!("{}", e); } } Err(e) => println!("{}", e), } }

Имя заголовка в запросе пишут строчными буквами, как принято в примерах крейта. Чтение ответа возвращает опциональное значение: если заголовка нет, ветка не сработает.

Передадим метку клиента в заголовке:

#[tokio::main] async fn main() { let client = reqwest::Client::new(); let url = "https://example.com"; match client .get(url) .header("user-agent", "lesson/1") .send() .await { Ok(resp) => println!("{}", resp.status().as_u16()), Err(e) => println!("{}", e), } }

Дан адрес:

https://example.com

Задайте заголовок accept со значением text/plain, выполните запрос и выведите числовой код ответа.

Скажите, где в объекте ответа искать заголовок content-type после успешной отправки.

Дан адрес:

https://example.com

Добавьте заголовок x-request-id со значением demo, прочитайте тип содержимого из ответа и выведите его текст или сообщение, что заголовка нет.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить