pub struct Body { /* private fields */ }Implementations§
Source§impl Body
impl Body
pub fn new(writer: BufWriter<TcpStream>, content: String) -> Body
Sourcepub fn add_to_body<B: Display>(&mut self, body: B) -> &mut Body
pub fn add_to_body<B: Display>(&mut self, body: B) -> &mut Body
Examples found in repository?
examples/body.rs (line 16)
12fn say_hi(request: Request, response: Response) -> io::Result<()> {
13 if request.body.is_empty() {
14 response.status_code(StatusCode::BadRequest)
15 .set_header("Content-Type", "text/html").flush()?
16 .add_to_body("<h1>400 Bad Request</h1>")
17 .add_to_body("<p>No message was delivered via body</p>").flush()?;
18
19 return Ok(());
20 };
21
22 let content = format!("{{ \"message\": \"{}\" }}", request.body);
23
24 response.json(content)?;
25
26 Ok(())
27}
28
29fn not_found(request: Request, response: Response) -> io::Result<()> {
30 let content = format!("<p>Page '{}' could not been found</p>", request.uri);
31
32 response.status_code(StatusCode::NotFound)
33 .set_header("Content-Type", "text/html").flush()?
34 .add_to_body("<h1>404 Not Found</h1>")
35 .add_to_body(content).flush()?;
36
37 Ok(())
38}More examples
examples/hello_world.rs (line 22)
7fn main() -> io::Result<()> {
8 let listener = TcpListener::bind("127.0.0.1:8080")?;
9
10 for stream in listener.incoming().filter_map(Result::ok) {
11 let (request, response) = Http::from(stream)?;
12
13 println!("New Request: ");
14 println!("- method: {:?}", request.method);
15 println!("- uri: {:?}", request.uri);
16 println!("- params: {:?}", request.params);
17 println!("- http_version: {:?}", request.http_version);
18 println!("- headers: {:?}", request.headers);
19
20 response.status_code(StatusCode::Ok)
21 .set_header("Content-Type", "text/html").flush()?
22 .add_to_body("<h1>Hello from Rust!</h1>").flush()?;
23 }
24
25 Ok(())
26}examples/calculator.rs (line 15)
11fn add(request: Request, response: Response) -> io::Result<()> {
12 let Some(a) = request.params.get("a") else {
13 response.status_code(StatusCode::BadRequest)
14 .set_header("Content-Type", "text/html").flush()?
15 .add_to_body("<h1>400 Bad Request</h1>")
16 .add_to_body("<p>Parameter 'a' not found</p>").flush()?;
17
18 return Ok(());
19 };
20
21 let Some(b) = request.params.get("b") else {
22 response.status_code(StatusCode::BadRequest)
23 .set_header("Content-Type", "text/html").flush()?
24 .add_to_body("<h1>400 Bad Request</h1>")
25 .add_to_body("<p>Parameter 'b' not found</p>").flush()?;
26
27 return Ok(());
28 };
29
30 let Ok(a) = a.parse::<u8>() else {
31 response.status_code(StatusCode::BadRequest)
32 .set_header("Content-Type", "text/html").flush()?
33 .add_to_body("<h1>400 Bad Request</h1>")
34 .add_to_body("<p>Parameter 'a' can only be a number from 0 to 255</p>").flush()?;
35
36 return Ok(());
37 };
38
39 let Ok(b) = b.parse::<u8>() else {
40 response.status_code(StatusCode::BadRequest)
41 .set_header("Content-Type", "text/html").flush()?
42 .add_to_body("<h1>400 Bad Request</h1>")
43 .add_to_body("<p>Parameter 'b' can only be a number from 0 to 255</p>").flush()?;
44
45 return Ok(());
46 };
47
48 let content = format!("<h1>{} + {} = {}</h1>", a, b, a as u16 + b as u16);
49
50 response.status_code(StatusCode::Ok)
51 .set_header("Content-Type", "text/html").flush()?
52 .add_to_body(content).flush()?;
53
54 Ok(())
55}
56
57fn sub(request: Request, response: Response) -> io::Result<()> {
58 let Some(a) = request.params.get("a") else {
59 response.status_code(StatusCode::BadRequest)
60 .set_header("Content-Type", "text/html").flush()?
61 .add_to_body("<h1>400 Bad Request</h1>")
62 .add_to_body("<p>Parameter 'a' not found</p>").flush()?;
63
64 return Ok(());
65 };
66
67 let Some(b) = request.params.get("b") else {
68 response.status_code(StatusCode::BadRequest)
69 .set_header("Content-Type", "text/html").flush()?
70 .add_to_body("<h1>400 Bad Request</h1>")
71 .add_to_body("<p>Parameter 'b' not found</p>").flush()?;
72
73 return Ok(());
74 };
75
76 let Ok(a) = a.parse::<u8>() else {
77 response.status_code(StatusCode::BadRequest)
78 .set_header("Content-Type", "text/html").flush()?
79 .add_to_body("<h1>400 Bad Request</h1>")
80 .add_to_body("<p>Parameter 'a' can only be a number from 0 to 255</p>").flush()?;
81
82 return Ok(());
83 };
84
85 let Ok(b) = b.parse::<u8>() else {
86 response.status_code(StatusCode::BadRequest)
87 .set_header("Content-Type", "text/html").flush()?
88 .add_to_body("<h1>400 Bad Request</h1>")
89 .add_to_body("<p>Parameter 'b' can only be a number from 0 to 255</p>").flush()?;
90
91 return Ok(());
92 };
93
94 let content = format!("<h1>{} - {} = {}</h1>", a, b, a as i16 - b as i16);
95
96 response.status_code(StatusCode::Ok)
97 .set_header("Content-Type", "text/html").flush()?
98 .add_to_body(content).flush()?;
99
100 Ok(())
101}
102
103fn not_found(request: Request, response: Response) -> io::Result<()> {
104 let content = format!("<p>Page '{}' could not been found</p>", request.uri);
105
106 response.status_code(StatusCode::NotFound)
107 .set_header("Content-Type", "text/html").flush()?
108 .add_to_body("<h1>404 Not Found</h1>")
109 .add_to_body(content).flush()?;
110
111 Ok(())
112}Sourcepub fn flush(&mut self) -> Result<&mut Body>
pub fn flush(&mut self) -> Result<&mut Body>
Examples found in repository?
examples/body.rs (line 17)
12fn say_hi(request: Request, response: Response) -> io::Result<()> {
13 if request.body.is_empty() {
14 response.status_code(StatusCode::BadRequest)
15 .set_header("Content-Type", "text/html").flush()?
16 .add_to_body("<h1>400 Bad Request</h1>")
17 .add_to_body("<p>No message was delivered via body</p>").flush()?;
18
19 return Ok(());
20 };
21
22 let content = format!("{{ \"message\": \"{}\" }}", request.body);
23
24 response.json(content)?;
25
26 Ok(())
27}
28
29fn not_found(request: Request, response: Response) -> io::Result<()> {
30 let content = format!("<p>Page '{}' could not been found</p>", request.uri);
31
32 response.status_code(StatusCode::NotFound)
33 .set_header("Content-Type", "text/html").flush()?
34 .add_to_body("<h1>404 Not Found</h1>")
35 .add_to_body(content).flush()?;
36
37 Ok(())
38}More examples
examples/hello_world.rs (line 22)
7fn main() -> io::Result<()> {
8 let listener = TcpListener::bind("127.0.0.1:8080")?;
9
10 for stream in listener.incoming().filter_map(Result::ok) {
11 let (request, response) = Http::from(stream)?;
12
13 println!("New Request: ");
14 println!("- method: {:?}", request.method);
15 println!("- uri: {:?}", request.uri);
16 println!("- params: {:?}", request.params);
17 println!("- http_version: {:?}", request.http_version);
18 println!("- headers: {:?}", request.headers);
19
20 response.status_code(StatusCode::Ok)
21 .set_header("Content-Type", "text/html").flush()?
22 .add_to_body("<h1>Hello from Rust!</h1>").flush()?;
23 }
24
25 Ok(())
26}examples/calculator.rs (line 16)
11fn add(request: Request, response: Response) -> io::Result<()> {
12 let Some(a) = request.params.get("a") else {
13 response.status_code(StatusCode::BadRequest)
14 .set_header("Content-Type", "text/html").flush()?
15 .add_to_body("<h1>400 Bad Request</h1>")
16 .add_to_body("<p>Parameter 'a' not found</p>").flush()?;
17
18 return Ok(());
19 };
20
21 let Some(b) = request.params.get("b") else {
22 response.status_code(StatusCode::BadRequest)
23 .set_header("Content-Type", "text/html").flush()?
24 .add_to_body("<h1>400 Bad Request</h1>")
25 .add_to_body("<p>Parameter 'b' not found</p>").flush()?;
26
27 return Ok(());
28 };
29
30 let Ok(a) = a.parse::<u8>() else {
31 response.status_code(StatusCode::BadRequest)
32 .set_header("Content-Type", "text/html").flush()?
33 .add_to_body("<h1>400 Bad Request</h1>")
34 .add_to_body("<p>Parameter 'a' can only be a number from 0 to 255</p>").flush()?;
35
36 return Ok(());
37 };
38
39 let Ok(b) = b.parse::<u8>() else {
40 response.status_code(StatusCode::BadRequest)
41 .set_header("Content-Type", "text/html").flush()?
42 .add_to_body("<h1>400 Bad Request</h1>")
43 .add_to_body("<p>Parameter 'b' can only be a number from 0 to 255</p>").flush()?;
44
45 return Ok(());
46 };
47
48 let content = format!("<h1>{} + {} = {}</h1>", a, b, a as u16 + b as u16);
49
50 response.status_code(StatusCode::Ok)
51 .set_header("Content-Type", "text/html").flush()?
52 .add_to_body(content).flush()?;
53
54 Ok(())
55}
56
57fn sub(request: Request, response: Response) -> io::Result<()> {
58 let Some(a) = request.params.get("a") else {
59 response.status_code(StatusCode::BadRequest)
60 .set_header("Content-Type", "text/html").flush()?
61 .add_to_body("<h1>400 Bad Request</h1>")
62 .add_to_body("<p>Parameter 'a' not found</p>").flush()?;
63
64 return Ok(());
65 };
66
67 let Some(b) = request.params.get("b") else {
68 response.status_code(StatusCode::BadRequest)
69 .set_header("Content-Type", "text/html").flush()?
70 .add_to_body("<h1>400 Bad Request</h1>")
71 .add_to_body("<p>Parameter 'b' not found</p>").flush()?;
72
73 return Ok(());
74 };
75
76 let Ok(a) = a.parse::<u8>() else {
77 response.status_code(StatusCode::BadRequest)
78 .set_header("Content-Type", "text/html").flush()?
79 .add_to_body("<h1>400 Bad Request</h1>")
80 .add_to_body("<p>Parameter 'a' can only be a number from 0 to 255</p>").flush()?;
81
82 return Ok(());
83 };
84
85 let Ok(b) = b.parse::<u8>() else {
86 response.status_code(StatusCode::BadRequest)
87 .set_header("Content-Type", "text/html").flush()?
88 .add_to_body("<h1>400 Bad Request</h1>")
89 .add_to_body("<p>Parameter 'b' can only be a number from 0 to 255</p>").flush()?;
90
91 return Ok(());
92 };
93
94 let content = format!("<h1>{} - {} = {}</h1>", a, b, a as i16 - b as i16);
95
96 response.status_code(StatusCode::Ok)
97 .set_header("Content-Type", "text/html").flush()?
98 .add_to_body(content).flush()?;
99
100 Ok(())
101}
102
103fn not_found(request: Request, response: Response) -> io::Result<()> {
104 let content = format!("<p>Page '{}' could not been found</p>", request.uri);
105
106 response.status_code(StatusCode::NotFound)
107 .set_header("Content-Type", "text/html").flush()?
108 .add_to_body("<h1>404 Not Found</h1>")
109 .add_to_body(content).flush()?;
110
111 Ok(())
112}Trait Implementations§
Auto Trait Implementations§
impl Freeze for Body
impl RefUnwindSafe for Body
impl Send for Body
impl Sync for Body
impl Unpin for Body
impl UnwindSafe for Body
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