pub struct Request<P = ()> { /* private fields */ }
Expand description
Resty Request wrapper.
Implementations§
Source§impl<P> Request<P>
impl<P> Request<P>
Sourcepub fn params(&self) -> &P
pub fn params(&self) -> &P
Returns params reference.
Examples found in repository?
examples/api.rs (line 59)
47 fn into(self) -> resty::Router {
48 let mut router = resty::Router::new();
49 let self_ = ::std::sync::Arc::new(self);
50 let a = self_.clone();
51 // no params
52 router.get("/", move |_request| {
53 a.list()
54 });
55
56 let a = self_.clone();
57 // dynamic params
58 router.get("/{id}", move |request| {
59 a.single(request.params().get_usize("id")?)
60 });
61
62 let a = self_.clone();
63 // static params
64 router.get(url!(/test/{id:usize}), move |request| {
65 a.single(request.params().id)
66 });
67
68 let a = self_.clone();
69 router.put(url!(/{id:usize}), move |request| {
70 let a = a.clone();
71 let id = request.params().id;
72 request.json().map_err(Into::into).and_then(move |call: Call| {
73 a.update(id, call)
74 })
75 });
76
77 let a = self_.clone();
78 // post request
79 router.post("/", move |request| {
80 let a = a.clone();
81 request.json().map_err(Into::into).and_then(move |call: Call| {
82 a.add(call)
83 })
84 });
85
86 router
87 }
Sourcepub fn take_params(&mut self) -> P
pub fn take_params(&mut self) -> P
Consumes params.
Sourcepub fn json<T>(
self,
) -> Then<Concat2<Body>, Result<T, Error>, fn(Result<Chunk, Error>) -> Result<T, Error>>where
T: for<'a> Deserialize<'a>,
pub fn json<T>(
self,
) -> Then<Concat2<Body>, Result<T, Error>, fn(Result<Chunk, Error>) -> Result<T, Error>>where
T: for<'a> Deserialize<'a>,
Read the body of this request and deserialize it from JSON. Returns error in case the request body cannot be read or deserialization fails.
Examples found in repository?
examples/api.rs (line 72)
47 fn into(self) -> resty::Router {
48 let mut router = resty::Router::new();
49 let self_ = ::std::sync::Arc::new(self);
50 let a = self_.clone();
51 // no params
52 router.get("/", move |_request| {
53 a.list()
54 });
55
56 let a = self_.clone();
57 // dynamic params
58 router.get("/{id}", move |request| {
59 a.single(request.params().get_usize("id")?)
60 });
61
62 let a = self_.clone();
63 // static params
64 router.get(url!(/test/{id:usize}), move |request| {
65 a.single(request.params().id)
66 });
67
68 let a = self_.clone();
69 router.put(url!(/{id:usize}), move |request| {
70 let a = a.clone();
71 let id = request.params().id;
72 request.json().map_err(Into::into).and_then(move |call: Call| {
73 a.update(id, call)
74 })
75 });
76
77 let a = self_.clone();
78 // post request
79 router.post("/", move |request| {
80 let a = a.clone();
81 request.json().map_err(Into::into).and_then(move |call: Call| {
82 a.add(call)
83 })
84 });
85
86 router
87 }
88}
89
90#[derive(Deserialize, Serialize, Clone)]
91struct Call {
92 pub test: u64,
93}
94
95fn main() {
96 let mut v1 = resty::Router::new();
97 v1.add("/products", Products {
98 calls: RwLock::new(vec![Call { test: 1 }, Call { test: 2}]),
99 }.into());
100
101 let mut server = resty::Router::new();
102 server.add("/v1", v1);
103 server.post("/test", |request| {
104 request.json().map(|mut call: Call| {
105 call.test += 1;
106 call
107 })
108 });
109
110 println!("{}", server.routes());
111 let listening = server.bind("localhost:3000").unwrap();
112 listening.wait()
113}
Trait Implementations§
Auto Trait Implementations§
impl<P = ()> !Freeze for Request<P>
impl<P = ()> !RefUnwindSafe for Request<P>
impl<P> Send for Request<P>where
P: Send,
impl<P = ()> !Sync for Request<P>
impl<P> Unpin for Request<P>where
P: Unpin,
impl<P = ()> !UnwindSafe for Request<P>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more