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

Запрос POST в Rust

Обращение с телом передает данные вместе с адресом. Для учебных примеров удобно положить структуру или значение в формат JSON: крейт сам сериализует его и выставляет тип содержимого.

Цепочка начинается с метода отправки на клиенте, затем идет команда упаковки JSON и шаг отправки с точкой ожидания. Ответ читают так же, как после запроса без тела.

Отправим объект с именем на учебный хост:

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

Хост может ответить любым кодом или не принять тело; сеть по-прежнему дает отдельную ветку ошибки. Число на экране показывает лишь код из ответа, если отправка прошла.

Тот же прием через макрос JSON без отдельной структуры:

async fn send_note(client: &reqwest::Client, url: &str) -> Result<u16, reqwest::Error> { let payload = serde_json::json!({"title": "note"}); let resp = client.post(url).json(&payload).send().await?; Ok(resp.status().as_u16()) } #[tokio::main] async fn main() { let client = reqwest::Client::new(); let url = "https://example.com/notes"; match send_note(&client, url).await { Ok(code) => println!("{}", code), Err(e) => println!("{}", e), } }

Дан адрес:

https://example.com/log

Сформируйте JSON с полем ok и значением true, отправьте тело, выведите числовой код ответа или текст ошибки сети.

Скажите, зачем к запросу с JSON подключают флаг json при добавлении крейта в Cargo.

Дан адрес:

https://example.com/items

Запишите функцию с исходом сбоя библиотеки, которая отправляет JSON с полем count равным 3, и выведите длину текста ответа из главной функции.

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