pub struct Request { /* private fields */ }Expand description
HTTP request representation.
Contains all components of an HTTP request.
Implementations§
Source§impl Request
impl Request
Sourcepub async fn http_from_reader(
reader: &mut BufReader<&mut TcpStream>,
buffer: usize,
) -> Result<Request, RequestError>
pub async fn http_from_reader( reader: &mut BufReader<&mut TcpStream>, buffer: usize, ) -> Result<Request, RequestError>
Parses an HTTP request from a buffered TCP stream reader.
Reads request line, headers and body from the stream and constructs a Request object.
§Arguments
&mut BufReader<&mut TcpStream>- The buffered TCP stream reader.usize- The buffer size for reading.
§Returns
Result<Request, RequestError>- The parsed request or an error.
Sourcepub async fn http_from_stream(
stream: &ArcRwLockStream,
buffer: usize,
) -> Result<Request, RequestError>
pub async fn http_from_stream( stream: &ArcRwLockStream, buffer: usize, ) -> Result<Request, RequestError>
Sourcepub async fn ws_from_stream(
stream: &ArcRwLockStream,
buffer: usize,
request: &mut Request,
) -> Result<Request, RequestError>
pub async fn ws_from_stream( stream: &ArcRwLockStream, buffer: usize, request: &mut Request, ) -> Result<Request, RequestError>
Parses a WebSocket request from a TCP stream.
Wraps the stream in a buffered reader and delegates to ws_from_reader.
§Arguments
&ArcRwLock<TcpStream>- The TCP stream to read from.usize- The buffer size for reading.&mut Request- The request template to populate.
§Returns
Result<Request, RequestError>- The parsed WebSocket request or an error.
Sourcepub async fn ws_from_reader(
reader: &mut BufReader<&mut TcpStream>,
buffer: usize,
request: &mut Request,
) -> Result<Request, RequestError>
pub async fn ws_from_reader( reader: &mut BufReader<&mut TcpStream>, buffer: usize, request: &mut Request, ) -> Result<Request, RequestError>
Parses a WebSocket request from a buffered TCP stream.
Handles WebSocket frames including text, binary, ping, pong and close frames. Assembles the request body from frame payload data.
§Arguments
&mut BufReader<&mut TcpStream>- The buffered TCP stream reader.usize- The buffer size for reading frames.&mut Request- The request template to populate.
§Returns
Result<Request, RequestError>- The parsed WebSocket request or an error.
Sourcepub fn try_get_query<K>(&self, key: K) -> Option<String>
pub fn try_get_query<K>(&self, key: K) -> Option<String>
Sourcepub fn try_get_header<K>(&self, key: K) -> Option<VecDeque<String>>
pub fn try_get_header<K>(&self, key: K) -> Option<VecDeque<String>>
Sourcepub fn try_get_header_front<K>(&self, key: K) -> Option<String>
pub fn try_get_header_front<K>(&self, key: K) -> Option<String>
Sourcepub fn try_get_header_back<K>(&self, key: K) -> Option<String>
pub fn try_get_header_back<K>(&self, key: K) -> Option<String>
Sourcepub fn get_header_length<K>(&self, key: K) -> usize
pub fn get_header_length<K>(&self, key: K) -> usize
Sourcepub fn get_headers_values_length(&self) -> usize
pub fn get_headers_values_length(&self) -> usize
Retrieves the total number of header values across all headers.
§Returns
usize- The total count of all header values.
Sourcepub fn get_headers_length(&self) -> usize
pub fn get_headers_length(&self) -> usize
Sourcepub fn has_header<K>(&self, key: K) -> bool
pub fn has_header<K>(&self, key: K) -> bool
Sourcepub fn has_header_value<K, V>(&self, key: K, value: V) -> bool
pub fn has_header_value<K, V>(&self, key: K, value: V) -> bool
Sourcepub fn get_body_string(&self) -> String
pub fn get_body_string(&self) -> String
Retrieves the body content of the request as a UTF-8 encoded string.
This method uses String::from_utf8_lossy to convert the byte slice returned by self.get_body() as_ref a string.
If the byte slice contains invalid UTF-8 sequences, they will be replaced with the Unicode replacement character ().
§Returns
String- The body content as a string.
Sourcepub fn get_body_json<T>(&self) -> Result<T, Error>where
T: DeserializeOwned,
pub fn get_body_json<T>(&self) -> Result<T, Error>where
T: DeserializeOwned,
Deserializes the body content of the request as_ref a specified type T.
This method first retrieves the body content as a byte slice using self.get_body().
It then attempts to deserialize the byte slice as_ref the specified type T using json_from_slice.
§Arguments
DeserializeOwned- The target type to deserialize as_ref (must implement DeserializeOwned).
§Returns
ResultJsonError<T>- The deserialization result.
Sourcepub fn get_string(&self) -> String
pub fn get_string(&self) -> String
Converts the request to a formatted string representation.
This method provides a human-readable summary of the request, including its method, host, version, path, query parameters, headers, and body information.
§Returns
String- The formatted request details.
Sourcepub fn get_upgrade_type(&self) -> UpgradeType
pub fn get_upgrade_type(&self) -> UpgradeType
Retrieves the upgrade type from the request headers.
This method looks for the UPGRADE header and attempts to parse its value
as_ref an UpgradeType. If the header is missing or the value is invalid,
it returns the default UpgradeType.
§Returns
UpgradeType- The parsed upgrade type.
Sourcepub fn is_ws(&self) -> bool
pub fn is_ws(&self) -> bool
Checks whether the WebSocket upgrade is enabled for this request.
This method determines if the UPGRADE header indicates a WebSocket connection.
§Returns
bool- Whether WebSocket upgrade is enabled.
Sourcepub fn is_h2c(&self) -> bool
pub fn is_h2c(&self) -> bool
Checks if the current upgrade type is HTTP/2 cleartext (h2c).
§Returns
bool- Whether the upgrade type is h2c.
Sourcepub fn is_tls(&self) -> bool
pub fn is_tls(&self) -> bool
Checks if the current upgrade type is TLS (any version).
§Returns
bool- Whether the upgrade type is TLS.
Sourcepub fn is_unknown_upgrade(&self) -> bool
pub fn is_unknown_upgrade(&self) -> bool
Sourcepub fn is_http1_1_or_higher(&self) -> bool
pub fn is_http1_1_or_higher(&self) -> bool
Checks if the HTTP version is HTTP/1.1 or higher.
§Returns
bool- Whether the version is HTTP/1.1 or higher.
Sourcepub fn is_http0_9(&self) -> bool
pub fn is_http0_9(&self) -> bool
Sourcepub fn is_http1_0(&self) -> bool
pub fn is_http1_0(&self) -> bool
Sourcepub fn is_http1_1(&self) -> bool
pub fn is_http1_1(&self) -> bool
Sourcepub fn is_unknown_version(&self) -> bool
pub fn is_unknown_version(&self) -> bool
Sourcepub fn is_options(&self) -> bool
pub fn is_options(&self) -> bool
Sourcepub fn is_connect(&self) -> bool
pub fn is_connect(&self) -> bool
Sourcepub fn is_unknown_method(&self) -> bool
pub fn is_unknown_method(&self) -> bool
Sourcepub fn is_enable_keep_alive(&self) -> bool
pub fn is_enable_keep_alive(&self) -> bool
Determines if a keep-alive connection should be enabled for this request.
This function checks the Connection header and the HTTP version to determine
if keep-alive should be enabled. The logic is as follows:
- If the
Connectionheader exists:- Returns
trueif the header value is “keep-alive” (case-insensitive). - Returns
falseif the header value is “close” (case-insensitive).
- Returns
- If no
Connectionheader is present:- Returns
trueif the HTTP version is 1.1 or higher. - Returns
falseotherwise.
- Returns
§Returns
bool- Whether keep-alive should be enabled.
Sourcepub fn is_disable_keep_alive(&self) -> bool
pub fn is_disable_keep_alive(&self) -> bool
Determines if keep-alive should be disabled for this request.
§Returns
bool- Whether keep-alive should be disabled.
Source§impl Request
impl Request
pub fn get_method(&self) -> &Method
pub fn get_host(&self) -> &String
pub fn get_version(&self) -> &HttpVersion
pub fn get_path(&self) -> &String
pub fn get_querys(&self) -> &HashMap<String, String, BuildHasherDefault<Hasher>>
pub fn get_headers( &self, ) -> &HashMap<String, VecDeque<String>, BuildHasherDefault<Hasher>>
pub fn get_body(&self) -> &Vec<u8> ⓘ
Trait Implementations§
Source§impl Default for Request
Provides a default value for Request.
impl Default for Request
Provides a default value for Request.
Returns a new Request instance with all fields initialized to their default values.