Added async example which makes multiple requests (#351)
This commit is contained in:
committed by
Sean McArthur
parent
15857a11a4
commit
aa6b1f4184
55
examples/async_multiple_requests.rs
Normal file
55
examples/async_multiple_requests.rs
Normal file
@@ -0,0 +1,55 @@
|
||||
#![deny(warnings)]
|
||||
|
||||
extern crate futures;
|
||||
extern crate reqwest;
|
||||
extern crate tokio;
|
||||
extern crate serde;
|
||||
#[macro_use] extern crate serde_derive;
|
||||
extern crate serde_json;
|
||||
|
||||
use futures::Future;
|
||||
use reqwest::async::{Client, Response};
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
struct Slideshow {
|
||||
title: String,
|
||||
author: String,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
struct SlideshowContainer {
|
||||
slideshow: Slideshow,
|
||||
}
|
||||
|
||||
fn fetch() -> impl Future<Item=(), Error=()> {
|
||||
let client = Client::new();
|
||||
|
||||
let json = |mut res : Response | {
|
||||
res.json::<SlideshowContainer>()
|
||||
};
|
||||
|
||||
let request1 =
|
||||
client
|
||||
.get("https://httpbin.org/json")
|
||||
.send()
|
||||
.and_then(json);
|
||||
|
||||
let request2 =
|
||||
client
|
||||
.get("https://httpbin.org/json")
|
||||
.send()
|
||||
.and_then(json);
|
||||
|
||||
request1.join(request2)
|
||||
.map(|(res1, res2)|{
|
||||
println!("{:?}", res1);
|
||||
println!("{:?}", res2);
|
||||
})
|
||||
.map_err(|err| {
|
||||
println!("stdout error: {}", err);
|
||||
})
|
||||
}
|
||||
|
||||
fn main() {
|
||||
tokio::run(fetch());
|
||||
}
|
||||
Reference in New Issue
Block a user