pub struct Response { /* private fields */ }Implementations§
Source§impl Response
impl Response
pub fn new(stream: TcpStream) -> Response
Sourcepub fn status_code(self, status_code: StatusCode) -> Header
pub fn status_code(self, status_code: StatusCode) -> Header
Examples found in repository?
examples/body.rs (line 14)
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 20)
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/quick_responses.rs (line 33)
31fn add(request: Request, response: Response) -> io::Result<()> {
32 let Some(a) = request.params.get("a") else {
33 response.status_code(StatusCode::BadRequest)
34 .html(&DIALOG_A_NOT_FOUND)?;
35
36 return Ok(());
37 };
38
39 let Some(b) = request.params.get("b") else {
40 response.status_code(StatusCode::BadRequest)
41 .html(&DIALOG_B_NOT_FOUND)?;
42
43 return Ok(());
44 };
45
46 let Ok(a) = a.parse::<u8>() else {
47 response.status_code(StatusCode::BadRequest)
48 .html(&DIALOG_A_INVALID)?;
49
50 return Ok(());
51 };
52
53 let Ok(b) = b.parse::<u8>() else {
54 response.status_code(StatusCode::BadRequest)
55 .html(&DIALOG_B_INVALID)?;
56 return Ok(());
57 };
58
59 let content = format!("<h1>{} + {} = {}</h1>", a, b, a as u16 + b as u16);
60
61 response.html(content)?;
62
63 Ok(())
64}
65
66fn sub(request: Request, response: Response) -> io::Result<()> {
67 let Some(a) = request.params.get("a") else {
68 response.status_code(StatusCode::BadRequest)
69 .html(&DIALOG_A_NOT_FOUND)?;
70
71 return Ok(());
72 };
73
74 let Some(b) = request.params.get("b") else {
75 response.status_code(StatusCode::BadRequest)
76 .html(&DIALOG_B_NOT_FOUND)?;
77
78 return Ok(());
79 };
80
81 let Ok(a) = a.parse::<u8>() else {
82 response.status_code(StatusCode::BadRequest)
83 .html(&DIALOG_A_INVALID)?;
84
85 return Ok(());
86 };
87
88 let Ok(b) = b.parse::<u8>() else {
89 response.status_code(StatusCode::BadRequest)
90 .html(&DIALOG_B_INVALID)?;
91 return Ok(());
92 };
93
94 let content = format!("<h1>{} - {} = {}</h1>", a, b, a as i16 - b as i16);
95
96 response.html(content)?;
97
98 Ok(())
99}
100
101fn not_found(request: Request, response: Response) -> io::Result<()> {
102 let content = format!("
103 <h1>400 Bad Request</h1>
104 <p>Page '{}' could not been found</p>
105 ", request.uri);
106
107 response.status_code(StatusCode::NotFound)
108 .html(content)?;
109
110 Ok(())
111}examples/calculator.rs (line 13)
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}pub fn text<T: Display>(self, text: T) -> Result<()>
Sourcepub fn html<H: Display>(self, html: H) -> Result<()>
pub fn html<H: Display>(self, html: H) -> Result<()>
Examples found in repository?
examples/quick_responses.rs (line 61)
31fn add(request: Request, response: Response) -> io::Result<()> {
32 let Some(a) = request.params.get("a") else {
33 response.status_code(StatusCode::BadRequest)
34 .html(&DIALOG_A_NOT_FOUND)?;
35
36 return Ok(());
37 };
38
39 let Some(b) = request.params.get("b") else {
40 response.status_code(StatusCode::BadRequest)
41 .html(&DIALOG_B_NOT_FOUND)?;
42
43 return Ok(());
44 };
45
46 let Ok(a) = a.parse::<u8>() else {
47 response.status_code(StatusCode::BadRequest)
48 .html(&DIALOG_A_INVALID)?;
49
50 return Ok(());
51 };
52
53 let Ok(b) = b.parse::<u8>() else {
54 response.status_code(StatusCode::BadRequest)
55 .html(&DIALOG_B_INVALID)?;
56 return Ok(());
57 };
58
59 let content = format!("<h1>{} + {} = {}</h1>", a, b, a as u16 + b as u16);
60
61 response.html(content)?;
62
63 Ok(())
64}
65
66fn sub(request: Request, response: Response) -> io::Result<()> {
67 let Some(a) = request.params.get("a") else {
68 response.status_code(StatusCode::BadRequest)
69 .html(&DIALOG_A_NOT_FOUND)?;
70
71 return Ok(());
72 };
73
74 let Some(b) = request.params.get("b") else {
75 response.status_code(StatusCode::BadRequest)
76 .html(&DIALOG_B_NOT_FOUND)?;
77
78 return Ok(());
79 };
80
81 let Ok(a) = a.parse::<u8>() else {
82 response.status_code(StatusCode::BadRequest)
83 .html(&DIALOG_A_INVALID)?;
84
85 return Ok(());
86 };
87
88 let Ok(b) = b.parse::<u8>() else {
89 response.status_code(StatusCode::BadRequest)
90 .html(&DIALOG_B_INVALID)?;
91 return Ok(());
92 };
93
94 let content = format!("<h1>{} - {} = {}</h1>", a, b, a as i16 - b as i16);
95
96 response.html(content)?;
97
98 Ok(())
99}Sourcepub fn json<J: Display>(self, json: J) -> Result<()>
pub fn json<J: Display>(self, json: J) -> Result<()>
Examples found in repository?
examples/body.rs (line 24)
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}Trait Implementations§
Auto Trait Implementations§
impl Freeze for Response
impl RefUnwindSafe for Response
impl Unpin for Response
impl UnwindSafe for Response
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