Skip to main content

HttpRequest

Struct HttpRequest 

Source
pub struct HttpRequest {
    pub version: Version,
    pub headers: HeaderMap<HeaderValue>,
    pub uri: Uri,
    pub method: Method,
}
Expand description

Parsed HTTP request with method, URI, headers, and version.

Contains the request-line and header section of an HTTP message (RFC 9110 §6). The message body is handled separately via streaming.

Fields§

§version: Version

HTTP version (e.g., HTTP/1.1, HTTP/2).

§headers: HeaderMap<HeaderValue>

Header fields from the request.

§uri: Uri

Request target URI.

§method: Method

HTTP method (GET, POST, CONNECT, etc.).

Implementations§

Source§

impl HttpRequest

Source

pub fn from_parts(parts: Parts) -> Self

Creates a request from hyper request parts.

Source

pub fn parse_with_len(buf: &[u8]) -> Result<Option<(usize, Self)>>

Parses a request from a buffer, returning None if incomplete.

On success, returns the byte length consumed and the parsed request. Use this for incremental parsing when data arrives in chunks.

Source

pub async fn peek( reader: &mut Prebuffered<impl AsyncRead + Unpin>, ) -> Result<(usize, Self)>

Reads and parses the request line and header section.

Does not remove the header section from reader. Returns the length of the header section and the request. Returns io::ErrorKind::OutOfMemory if the header section exceeds the buffer limit.

Source

pub async fn read( reader: &mut Prebuffered<impl AsyncRead + Unpin>, ) -> Result<Self>

Reads and parses the request line and header section.

Removes the header section from reader. Returns io::ErrorKind::OutOfMemory if the header section exceeds the buffer limit.

Source

pub fn parse(buf: &[u8]) -> Result<Option<Self>>

Parses a request from a buffer, returning None if incomplete.

Source

pub fn try_into_proxy_request(self) -> Result<HttpProxyRequest>

Converts to a proxy request for authority-form or absolute-form targets.

§Errors

Returns an error for origin-form requests (GET /path), which lack routing information for forward proxies.

Source

pub fn host(&self) -> Option<&str>

Returns the target host from the request.

For HTTP/2+, extracts from the :authority pseudo-header (via URI). For HTTP/1.x, extracts from the Host header field.

Source

pub fn header_str(&self, name: impl AsHeaderName) -> Option<&str>

Returns a header value as a string, if present and valid UTF-8.

Source

pub fn classify(&self) -> Result<HttpRequestKind>

Classifies the request by its target form (RFC 9110 §7.1).

§Errors

Returns an error if a CONNECT request lacks a valid authority-form target, or if an HTTP/1 absolute-form request target includes a scheme but no authority.

Source

pub fn set_forwarded_for(&mut self, src_addr: SocketAddr) -> &mut Self

Appends an X-Forwarded-For header with the client address.

Per the de facto standard, this identifies the originating client IP for requests forwarded through proxies.

Source

pub fn set_forwarded_for_if_tcp(&mut self, src_addr: SrcAddr) -> &mut Self

Appends an X-Forwarded-For header with the client address if the source is a TCP address.

Does nothing if src_addr is SrcAddr::Unix

Source

pub fn remove_headers( &mut self, names: impl IntoIterator<Item = impl AsHeaderName>, ) -> &mut Self

Removes the specified headers from the request.

Source

pub fn set_via( &mut self, pseudonym: impl Display, ) -> Result<&mut Self, InvalidHeaderValue>

Appends a Via header indicating this proxy (RFC 9110 §7.6.3).

The header value includes the protocol version and the given pseudonym.

Source

pub fn set_target( &mut self, target: Uri, ) -> Result<&mut Self, InvalidHeaderValue>

Sets the request target URI and updates the Host header.

The original Host value is preserved in X-Forwarded-Host.

Source

pub fn set_absolute_http_authority( &mut self, authority: Authority, ) -> Result<&mut Self>

Converts the request to absolute-form with the given authority.

Sets the scheme to HTTP and updates the Host header to match. Used by reverse proxies to transform origin-form requests.

Trait Implementations§

Source§

impl Debug for HttpRequest

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more