Запрос через reqwest ожидает длинного ответа на опрос, поэтому я создал поток байтов и попытался десериализовать каждый блок в JSON. Я сразу понял, что это неправильно, потому что каждый кусок может быть неполным, поэтому десериализация может потерпеть неудачу; хотя некоторые куски были десериализованы в JSON, большинство из них были неудачными. Как мне это сделать?
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::new();
let mut stream = client
.get("https://...")
.send()
.await?
.bytes_stream();
while let Some(chunk) = stream.next().await {
match serde_json::from_slice::<Value>(&chunk?){
Ok(value) => println!("OK: {:?}", value),
Err(e) => println!("ERROR: {:?}", e),
}
};
Ok(())
}