pub struct Request { /* private fields */ }
Expand description
Represents an incoming HTTP-like request.
Implementations§
Source§impl Request
impl Request
Sourcepub fn new(
method: Method,
path: String,
headers: HashMap<String, String>,
body: Vec<u8>,
) -> Self
pub fn new( method: Method, path: String, headers: HashMap<String, String>, body: Vec<u8>, ) -> Self
Creates a new Request.
Sourcepub fn body_string(&self) -> Result<String, FromUtf8Error>
pub fn body_string(&self) -> Result<String, FromUtf8Error>
Gets the request body as a string.
Examples found in repository?
examples/demo.rs (line 25)
6async fn main() -> Result<(), Box<dyn std::error::Error>> {
7 let server = lazy_sock!("/tmp/lazy-sock-demo.sock");
8
9 // Route for GET /
10 server
11 .route(Method::Get, "/", |_req| {
12 Response::json(r#"{"message": "Hello, World!", "status": "success"}"#)
13 })
14 .await;
15
16 // Route for GET /health
17 server
18 .route(Method::Get, "/health", |_req| {
19 Response::json(r#"{"status": "healthy"}"#)
20 })
21 .await;
22
23 // Route for POST /echo
24 server
25 .route(Method::Post, "/echo", |req| match req.body_string() {
26 Ok(body) if !body.is_empty() => Response::json(&format!(r#"{{"echo": "{}"}}"#, body)),
27 Ok(_) => Response::new(400).with_text("Request body is empty"),
28 Err(_) => Response::new(400).with_text("Invalid UTF-8 in request body"),
29 })
30 .await;
31
32 // Route for GET /html
33 server
34 .route(Method::Get, "/html", |_req| {
35 Response::html(
36 r#"
37 <!DOCTYPE html>
38 <html>
39 <head><title>Lazy Sock Demo</title></head>
40 <body><h1>Hello from Lazy Sock!</h1></body>
41 </html>
42 "#,
43 )
44 })
45 .await;
46
47 println!("Lazy Sock Demo Server Starting...");
48 println!("Socket: /tmp/lazy-sock-demo.sock");
49 println!("Try these commands:");
50 println!(" curl --unix-socket /tmp/lazy-sock-demo.sock http://localhost/");
51 println!(" curl --unix-socket /tmp/lazy-sock-demo.sock http://localhost/health");
52 println!(" curl --unix-socket /tmp/lazy-sock-demo.sock http://localhost/html");
53 println!(
54 " curl --unix-socket /tmp/lazy-sock-demo.sock -X POST http://localhost/echo -d 'Hello from curl!'"
55 );
56 println!("Press Ctrl+C to stop");
57 println!();
58
59 // Run the server
60 server.run().await?;
61
62 println!("Server stopped gracefully.");
63 Ok(())
64}
Sourcepub fn query_params(&self) -> HashMap<String, String>
pub fn query_params(&self) -> HashMap<String, String>
Parses the query parameters from the path using the url
crate.
Sourcepub fn path_without_query(&self) -> &str
pub fn path_without_query(&self) -> &str
Gets the path part of the URL, without the query string.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Request
impl RefUnwindSafe for Request
impl Send for Request
impl Sync for Request
impl Unpin for Request
impl UnwindSafe for Request
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