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

Код статуса ответа в Rust

Сервер возвращает не только тело, но и числовой код состояния. По нему видно, нашлась ли страница, принят ли запрос или хост отказал. Сбой сети смотрят отдельно: код появляется только когда объект ответа уже получен.

Успешная выдача часто помечена числом двести. Коды четыреста и пятьсот говорят об ошибке на стороне клиента или сервера. Крейт не считает такой ответ сетевым сбоем: тело можно читать, но смысл данных нужно проверять по коду.

Спросим код у учебного хоста:

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

На экране часто 200, если хост ответил. Метод на объекте ответа дает тип с кодом; число для ветвления берут через преобразование к беззнаковому целому.

Запросим путь, которого на хосте может не быть:

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

Дан адрес:

https://example.com

Выполните запрос, выведите числовой код ответа и при необходимости текст ошибки сети.

Дан фрагмент:

match client.get(url).send().await { Ok(resp) => { let code = resp.status().as_u16(); if code != 200 { println!("bad"); } } Err(e) => println!("{}", e), }

Скажите, при каком числе в code напечатается bad, если сервер вернул ответ с кодом четыреста четыре.

Скажите, можно ли прочитать код ответа, если переменная с исходом отправки попала в ветку с ошибкой сети.

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