Struct Request
struct Request<'headers, 'buf> { ... }
A parsed Request.
The optional values will be None if a parse was not complete, and did not
parse the associated property. This allows you to inspect the parts that
could be parsed, before reading more, in case you wish to exit early.
Example
let buf = b"GET /404 HTTP/1.1\r\nHost:";
let mut headers = [httparse::EMPTY_HEADER; 16];
let mut req = httparse::Request::new(&mut headers);
let res = req.parse(buf).unwrap();
if res.is_partial() {
match req.path {
Some(ref path) => {
// check router for path.
// /404 doesn't exist? we could stop parsing
},
None => {
// must read more and parse again
}
}
}
Fields
method: Option<&'buf str>The request method, such as
GET.path: Option<&'buf str>The request path, such as
/about-us.version: Option<u8>The request minor version, such as
1forHTTP/1.1.headers: &'headers mut [Header<'buf>]The request headers.
Implementations
impl<'h, 'b> Request<'h, 'b>
fn new(headers: &'h mut [Header<'b>]) -> Request<'h, 'b>Creates a new Request, using a slice of headers you allocate.
fn parse_with_uninit_headers(self: &mut Self, buf: &'b [u8], headers: &'h mut [MaybeUninit<Header<'b>>]) -> Result<usize>Try to parse a buffer of bytes into the Request, except use an uninitialized slice of
Headers.For more information, see
parsefn parse(self: &mut Self, buf: &'b [u8]) -> Result<usize>Try to parse a buffer of bytes into the Request.
Returns byte offset in
bufto start of HTTP body.
impl<'headers, 'buf> Debug for Request<'headers, 'buf>
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl<'headers, 'buf> Eq for Request<'headers, 'buf>
impl<'headers, 'buf> Freeze for Request<'headers, 'buf>
impl<'headers, 'buf> PartialEq for Request<'headers, 'buf>
fn eq(self: &Self, other: &Request<'headers, 'buf>) -> bool
impl<'headers, 'buf> RefUnwindSafe for Request<'headers, 'buf>
impl<'headers, 'buf> Send for Request<'headers, 'buf>
impl<'headers, 'buf> StructuralPartialEq for Request<'headers, 'buf>
impl<'headers, 'buf> Sync for Request<'headers, 'buf>
impl<'headers, 'buf> Unpin for Request<'headers, 'buf>
impl<'headers, 'buf> UnsafeUnpin for Request<'headers, 'buf>
impl<'headers, 'buf> UnwindSafe for Request<'headers, 'buf>
impl<T> Any for Request<'headers, 'buf>
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for Request<'headers, 'buf>
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for Request<'headers, 'buf>
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> From for Request<'headers, 'buf>
fn from(t: T) -> TReturns the argument unchanged.
impl<T, U> Into for Request<'headers, 'buf>
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for Request<'headers, 'buf>
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for Request<'headers, 'buf>
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>