pub struct Request {
pub method: Method,
pub host: String,
pub version: HttpVersion,
pub path: String,
pub querys: HashMap<String, VecDeque<String>, BuildHasherDefault<Hasher>>,
pub headers: HashMap<String, VecDeque<String>, BuildHasherDefault<Hasher>>,
pub body: Vec<u8>,
}Expand description
HTTP request representation.
Contains all components of an HTTP request.
The fields stay pub: type/tests/request builds fixtures through them, so
this is published API and §17.14 does not recall it (semver).
Fields§
§method: MethodHTTP request method.
host: StringRequest host.
version: HttpVersionHTTP protocol version.
path: StringRequest path.
querys: HashMap<String, VecDeque<String>, BuildHasherDefault<Hasher>>URL query parameters.
headers: HashMap<String, VecDeque<String>, BuildHasherDefault<Hasher>>HTTP headers collection.
body: Vec<u8>Request body content.
Implementations§
Source§impl Request
impl Request
Sourcepub fn reset(&mut self) -> &mut Request
pub fn reset(&mut self) -> &mut Request
Resets the request to its default state while retaining allocated capacity.
This keeps the header map, query map, body, and string allocations so persistent (keep-alive) connections avoid repeated allocation per request.
§Returns
&mut Self- A mutable reference to self for chaining.
Sourcepub fn try_get_query<K>(&self, key: K) -> Option<VecDeque<String>>
pub fn try_get_query<K>(&self, key: K) -> Option<VecDeque<String>>
Sourcepub fn try_get_query_front<K>(&self, key: K) -> Option<String>
pub fn try_get_query_front<K>(&self, key: K) -> Option<String>
Tries to get the first query parameter value by key.
Use this when the parameter is expected to appear once; use
try_get_query when every value matters.
§Arguments
K- The query parameter key, which implementsAsRef<str>.
§Returns
Option<RequestQuerysValueItem>- The first parameter value if it exists.
Sourcepub fn try_get_query_back<K>(&self, key: K) -> Option<String>
pub fn try_get_query_back<K>(&self, key: K) -> Option<String>
Sourcepub fn try_get_query_size<K>(&self, key: K) -> Option<usize>
pub fn try_get_query_size<K>(&self, key: K) -> Option<usize>
Sourcepub fn get_query_front<K>(&self, key: K) -> String
pub fn get_query_front<K>(&self, key: K) -> String
Sourcepub fn get_querys_size(&self) -> usize
pub fn get_querys_size(&self) -> usize
Retrieves the number of query parameters.
§Returns
usize- The count of distinct query parameter keys.
Sourcepub fn try_get_header<K>(&self, key: K) -> Option<VecDeque<String>>
pub fn try_get_header<K>(&self, key: K) -> Option<VecDeque<String>>
Tries to retrieve the value of a request header by its key.
The key is matched case-insensitively, because the parser stores every
header name lowercased and an HTTP header name is case-insensitive by
specification. Looking a header up with Content-Type and with
content-type therefore find the same value.
§Arguments
K- The header’s key, which must implementAsRef<str>.
§Returns
Option<RequestHeadersValue>- The optional header values.
Sourcepub fn get_header<K>(&self, key: K) -> VecDeque<String>
pub fn get_header<K>(&self, key: K) -> 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 get_header_front<K>(&self, key: K) -> String
pub fn get_header_front<K>(&self, key: K) -> 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_back<K>(&self, key: K) -> String
pub fn get_header_back<K>(&self, key: K) -> String
Sourcepub fn try_get_header_size<K>(&self, key: K) -> Option<usize>
pub fn try_get_header_size<K>(&self, key: K) -> Option<usize>
Sourcepub fn get_header_size<K>(&self, key: K) -> usize
pub fn get_header_size<K>(&self, key: K) -> usize
Sourcepub fn get_headers_values_size(&self) -> usize
pub fn get_headers_values_size(&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_size(&self) -> usize
pub fn get_headers_size(&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
Tries to parse cookies from the Cookie header.
This method retrieves the Cookie header value and parses it into
a collection of key-value pairs representing the cookies.
§Returns
Option<Cookies>- The parsed cookies if the header exists, otherwiseNone.
Gets a cookie value by its key.
This method first parses the cookies from the Cookie header,
then retrieves the value for the specified key.
§Arguments
K- The cookie key, which implementsAsRef<str>.
§Returns
CookieValue- The cookie value.
§Panics
This function will panic if the Cookie header is not found
or the cookie key does not exist.
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 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 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 try_get_body_json<T>(&self) -> Result<T, Error>where
T: DeserializeOwned,
pub fn try_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.
The target type T is a type parameter of this method and must implement DeserializeOwned.
§Returns
Result<T, serde_json::Error>- The deserialization result.
Sourcepub fn get_body_json<T>(&self) -> Twhere
T: DeserializeOwned,
pub fn get_body_json<T>(&self) -> Twhere
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.
The target type T is a type parameter of this method and must implement DeserializeOwned.
§Returns
T- The deserialized body content.
§Panics
This function will panic if the deserialization fails.
Sourcepub fn is_ws_upgrade_type(&self) -> bool
pub fn is_ws_upgrade_type(&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_multipart_form_data(&self) -> bool
pub fn is_multipart_form_data(&self) -> bool
Checks whether the request declares a multipart/form-data body.
§Returns
bool- Whether the request content type ismultipart/form-data.
Sourcepub fn try_get_content_type(&self) -> Option<String>
pub fn try_get_content_type(&self) -> Option<String>
Tries to get the request content type with its parameters stripped.
A Content-Type header such as text/html; charset=utf-8 yields the
media type alone, so a caller comparing against a media type does not
have to know that parameters may follow it.
§Returns
Option<RequestContentType>- The media type, orNonewhen the header is absent.
Sourcepub fn try_get_content_type_parameter<K>(&self, name: K) -> Option<String>
pub fn try_get_content_type_parameter<K>(&self, name: K) -> Option<String>
Tries to get one parameter of the request Content-Type header.
The name is matched case-insensitively and a quoted value is unquoted,
so both boundary=abc and boundary="abc" yield abc.
§Arguments
K- The parameter name, which requires theAsRef<str>bound.
§Returns
Option<RequestContentTypeParameter>- The parameter value, orNonewhen absent.
Sourcepub fn try_get_body_form_data(&self) -> Option<Vec<BodyPart>>
pub fn try_get_body_form_data(&self) -> Option<Vec<BodyPart>>
Tries to decode a multipart/form-data body into its parts.
The boundary is read from the request Content-Type header rather than
guessed, so a body whose content type declares no boundary, a truncated
body, and a part without a name all yield None.
§Returns
Option<MultipartFormDataParts>- The decoded parts, orNonewhen unavailable.
Sourcepub fn get_body_form(
&self,
) -> HashMap<String, String, BuildHasherDefault<Hasher>>
pub fn get_body_form( &self, ) -> HashMap<String, String, BuildHasherDefault<Hasher>>
Decodes an application/x-www-form-urlencoded body into its fields.
§Returns
BodyForm- The decoded form fields.
Sourcepub fn try_get_body_form_data_text<K>(&self, name: K) -> Option<String>
pub fn try_get_body_form_data_text<K>(&self, name: K) -> Option<String>
Tries to get a plain text field of a multipart/form-data body.
A part that uploads a file is skipped, so a file field never silently decodes as text.
§Arguments
K- The form field name, which requires theAsRef<str>bound.
§Returns
Option<BodyFormValue>- The field value, orNonewhen absent or a file.
Sourcepub fn is_h2c_upgrade_type(&self) -> bool
pub fn is_h2c_upgrade_type(&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_upgrade_type(&self) -> bool
pub fn is_tls_upgrade_type(&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_type(&self) -> bool
pub fn is_unknown_upgrade_type(&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_mut_method(&mut self) -> &mut Method
pub fn set_method(&mut self, val: Method) -> &mut Request
pub fn get_host(&self) -> &String
pub fn get_mut_host(&mut self) -> &mut String
pub fn set_host(&mut self, val: String) -> &mut Request
pub fn get_version(&self) -> &HttpVersion
pub fn get_mut_version(&mut self) -> &mut HttpVersion
pub fn set_version(&mut self, val: HttpVersion) -> &mut Request
pub fn get_path(&self) -> &String
pub fn get_mut_path(&mut self) -> &mut String
pub fn set_path(&mut self, val: String) -> &mut Request
pub fn get_querys( &self, ) -> &HashMap<String, VecDeque<String>, BuildHasherDefault<Hasher>>
pub fn get_mut_querys( &mut self, ) -> &mut HashMap<String, VecDeque<String>, BuildHasherDefault<Hasher>>
pub fn set_querys( &mut self, val: HashMap<String, VecDeque<String>, BuildHasherDefault<Hasher>>, ) -> &mut Request
pub fn get_headers( &self, ) -> &HashMap<String, VecDeque<String>, BuildHasherDefault<Hasher>>
pub fn get_mut_headers( &mut self, ) -> &mut HashMap<String, VecDeque<String>, BuildHasherDefault<Hasher>>
pub fn set_headers( &mut self, val: HashMap<String, VecDeque<String>, BuildHasherDefault<Hasher>>, ) -> &mut Request
pub fn get_body(&self) -> &Vec<u8> ⓘ
pub fn get_mut_body(&mut self) -> &mut Vec<u8> ⓘ
pub fn set_body(&mut self, val: Vec<u8>) -> &mut Request
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.
Source§impl<'de> Deserialize<'de> for Request
impl<'de> Deserialize<'de> for Request
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Request, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Request, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for Request
Source§impl Serialize for Request
impl Serialize for Request
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for Request
Auto Trait Implementations§
impl Freeze for Request
impl RefUnwindSafe for Request
impl Send for Request
impl Sync for Request
impl Unpin for Request
impl UnsafeUnpin for Request
impl UnwindSafe for Request
Blanket Implementations§
impl<T> AnySend for T
impl<T> AnySendClone for T
impl<T> AnySendSync for T
impl<T> AnySendSyncClone for T
impl<T> AnySync for T
impl<T> AnySyncClone for T
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.