pub struct Server { /* private fields */ }Expand description
Routes requests to various Handlers based on the request URL, and runs the actual HTTP server
and async event loop.
Implementations§
Source§impl Server
impl Server
Sourcepub fn new() -> Server
pub fn new() -> Server
Examples found in repository?
More examples
examples/5.rs (line 9)
8fn main() {
9 let mut server = Server::new();
10 use std::sync::Arc;
11 let database = Arc::new(memory::MemoryAdapter::new());
12 server.resource("/cats", move |req: Request| {
13 let database1 = database.clone();
14 req
15 .and_then(move |req| {
16 database1.handle(req)
17 })
18 });
19 server.listen("127.0.0.1:3000");
20}examples/4.rs (line 9)
8fn main() {
9 let mut server = Server::new();
10 let database = memory::MemoryAdapter::new();
11 server.resource("/cats", move |req: Request| {
12 database.handle(req).and_then(|mut reply| {
13 {
14 let mut data = reply.data_mut().unwrap();
15 data.insert("example".to_string(), json!("data"));
16 }
17 reply
18 })
19 });
20 server.listen("127.0.0.1:3000");
21}examples/7.rs (line 9)
8fn main() {
9 let mut server = Server::new();
10 use std::sync::Arc;
11 use std::ops::Deref;
12 let database = Arc::new(memory::MemoryAdapter::new());
13 let chan = Arc::new(memory::MemoryChannel::new());
14 server.resource("/cats", move |req: Request| {
15 let database1 = database.clone();
16 let chan1 = chan.clone();
17 let chan2 = chan.clone();
18 req
19 .and_then(move |req| {
20 match req.method() {
21 Method::Listen => chan1.handle(req),
22 _ => database1.handle(req),
23 }
24 })
25 .and_then(move |reply| {
26 util::send_from_reply(reply, chan2.deref())
27 })
28 });
29 server.listen("127.0.0.1:3000");
30}Additional examples can be found in:
pub fn handle(&self, req: Request) -> BoxFuture<Reply, Error>
Sourcepub fn resource<T: Into<String>, R: Handler + 'static>(
&mut self,
route: T,
handler: R,
)
pub fn resource<T: Into<String>, R: Handler + 'static>( &mut self, route: T, handler: R, )
Examples found in repository?
More examples
examples/5.rs (lines 12-18)
8fn main() {
9 let mut server = Server::new();
10 use std::sync::Arc;
11 let database = Arc::new(memory::MemoryAdapter::new());
12 server.resource("/cats", move |req: Request| {
13 let database1 = database.clone();
14 req
15 .and_then(move |req| {
16 database1.handle(req)
17 })
18 });
19 server.listen("127.0.0.1:3000");
20}examples/4.rs (lines 11-19)
8fn main() {
9 let mut server = Server::new();
10 let database = memory::MemoryAdapter::new();
11 server.resource("/cats", move |req: Request| {
12 database.handle(req).and_then(|mut reply| {
13 {
14 let mut data = reply.data_mut().unwrap();
15 data.insert("example".to_string(), json!("data"));
16 }
17 reply
18 })
19 });
20 server.listen("127.0.0.1:3000");
21}examples/7.rs (lines 14-28)
8fn main() {
9 let mut server = Server::new();
10 use std::sync::Arc;
11 use std::ops::Deref;
12 let database = Arc::new(memory::MemoryAdapter::new());
13 let chan = Arc::new(memory::MemoryChannel::new());
14 server.resource("/cats", move |req: Request| {
15 let database1 = database.clone();
16 let chan1 = chan.clone();
17 let chan2 = chan.clone();
18 req
19 .and_then(move |req| {
20 match req.method() {
21 Method::Listen => chan1.handle(req),
22 _ => database1.handle(req),
23 }
24 })
25 .and_then(move |reply| {
26 util::send_from_reply(reply, chan2.deref())
27 })
28 });
29 server.listen("127.0.0.1:3000");
30}examples/6.rs (lines 12-30)
8fn main() {
9 let mut server = Server::new();
10 use std::sync::Arc;
11 let database = Arc::new(memory::MemoryAdapter::new());
12 server.resource("/cats", move |req: Request| {
13 let database1 = database.clone();
14 req
15 .and_then(move |req| {
16 if req.method() == Method::Delete {
17 if let &JsonValue::String(ref password) = req.param("password") {
18 if password != "meow" {
19 return Error::forbidden("incorrect password");
20 }
21 } else {
22 return Error::unauthorized("please provide a password");
23 }
24 }
25 req.boxed()
26 })
27 .and_then(move |req| {
28 database1.handle(req)
29 })
30 });
31 server.listen("127.0.0.1:3000");
32}Additional examples can be found in:
Sourcepub fn listen<T: Into<String> + Send + 'static>(self, bind_addr: T)
pub fn listen<T: Into<String> + Send + 'static>(self, bind_addr: T)
Examples found in repository?
More examples
examples/5.rs (line 19)
8fn main() {
9 let mut server = Server::new();
10 use std::sync::Arc;
11 let database = Arc::new(memory::MemoryAdapter::new());
12 server.resource("/cats", move |req: Request| {
13 let database1 = database.clone();
14 req
15 .and_then(move |req| {
16 database1.handle(req)
17 })
18 });
19 server.listen("127.0.0.1:3000");
20}examples/4.rs (line 20)
8fn main() {
9 let mut server = Server::new();
10 let database = memory::MemoryAdapter::new();
11 server.resource("/cats", move |req: Request| {
12 database.handle(req).and_then(|mut reply| {
13 {
14 let mut data = reply.data_mut().unwrap();
15 data.insert("example".to_string(), json!("data"));
16 }
17 reply
18 })
19 });
20 server.listen("127.0.0.1:3000");
21}examples/7.rs (line 29)
8fn main() {
9 let mut server = Server::new();
10 use std::sync::Arc;
11 use std::ops::Deref;
12 let database = Arc::new(memory::MemoryAdapter::new());
13 let chan = Arc::new(memory::MemoryChannel::new());
14 server.resource("/cats", move |req: Request| {
15 let database1 = database.clone();
16 let chan1 = chan.clone();
17 let chan2 = chan.clone();
18 req
19 .and_then(move |req| {
20 match req.method() {
21 Method::Listen => chan1.handle(req),
22 _ => database1.handle(req),
23 }
24 })
25 .and_then(move |reply| {
26 util::send_from_reply(reply, chan2.deref())
27 })
28 });
29 server.listen("127.0.0.1:3000");
30}Additional examples can be found in:
Auto Trait Implementations§
impl !RefUnwindSafe for Server
impl !UnwindSafe for Server
impl Freeze for Server
impl Send for Server
impl Sync for Server
impl Unpin for Server
impl UnsafeUnpin for Server
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