【发布时间】:2022-08-03 22:35:42
【问题描述】:
从 reqwest 文档中,您可以从请求响应中获取 deserialized json 或 body text。
我看不到的是如何同时获得它们。我的要求是我希望解码后的 json 在代码中使用,但想打印出文本以进行调试。不幸的是,由于这两个函数都获得了请求的所有权,因此尝试获取两者都会给您一个关于使用移动值的错误。似乎也无法克隆请求。
这是我希望能够做的事情的一个例子,但是第 4 行是无效的,因为它使用了在第 1 行移动的响应。
let posts: Vec<Post> = match response.json::<PostList>().await {
Ok(post_list) => post_list.posts,
Err(e) => {
let text = response.text().await.unwrap();
println!(\"Error fetching posts: {}, {}\", e, text);
Vec::new()
}
};
-
Response::json()method 实际上只是获取响应正文的字节,然后在其上调用serde_json::from_slice。是什么阻止你做同样的事情?获取text(),将其打印出来,然后将文本反序列化为 JSON。 -
作为替代方案,您也可以直接打印
posts对象,假设它实现了Debug或Display。