У меня есть простой HTTP-сервер, который ожидает POST данных json. Он отправит обратно те же самые json данные, но с дополнительным полем '' ''.
Я могу продемонстрировать это с помощью curl:
$ curl -X POST -H "Content-Type: application/json" -d '{"id":1,"jsonrpc":"2.0","method":"getNext","params":[{"flavour":"apples"}]}' http://127.0.0.1:8008
{"params": [{"flavour": "apples"}], "received": "ok", "jsonrpc": "2.0", "id": 1, "method": "getNext"}
HTTP-сервер отправил некоторые json, и он ответил так же json, но с дополнительным полем 'Receive'.
Я пытаюсь сделать то же самое в ржавчине с помощью reqwest.
use serde_json::{Value};
#[tokio::main]
async fn main() {
let url = "http://127.0.0.1:8008";
let data = r#"
{
"id": 1,
"jsonrpc": "2.0",
"method": "getNext",
"params": [ {
"flavour": "apple"
} ]
}"#;
let v: Value = match serde_json::from_str(data) {
Err(_) => panic!("this is a terrible mistake!"),
Ok(y) => y,
};
let client = reqwest::Client::new();
let res = client.post(url)
.json(&v)
.send()
.await;
println!("{:?}",res);
}
Пока это действительно делает вызов, и я вижу отправленное json в журнале сервера, и я вижу, что сервер отправляет обратно json, как и в случае с curl ... Я не знаю, кому на самом деле добраться до данные в Rust. Кажется, все, что есть, это нормально, что вызов сработал ... но как получить json сервер, отправленный обратно?
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.06s
Running `/Users/x/RUST/projects/monitor/target/debug/monitor`
Ok(Response { url: "http://127.0.0.1:8008/", status: 200, headers: {"server": "BaseHTTP/0.3 Python/2.7.16", "date": "Fri, 29 May 2020 13:54:39 GMT", "content-type": "application/json"} })