[]Struct http_types::Request

pub struct Request { /* fields omitted */ }

An HTTP request.

Examples

use http_types::{Url, Method, Request};

let mut req = Request::new(Method::Get, Url::parse("https://example.com").unwrap());
req.set_body("Hello, Nori!");

Methods

impl Request[src]

pub fn new(method: Method, url: Url) -> Self[src]

Create a new request.

pub fn method(&self) -> Method[src]

Get the HTTP method

pub fn set_method(&mut self, method: Method)[src]

Set the HTTP method.

pub fn url(&self) -> &Url[src]

Get a reference to the url.

Examples

use http_types::{Url, Method, Request, Response, StatusCode};
let mut req = Request::new(Method::Get, Url::parse("https://example.com")?);
assert_eq!(req.url().scheme(), "https");

pub fn url_mut(&mut self) -> &mut Url[src]

Get a mutable reference to the url.

Examples

use http_types::{Url, Method, Request, Response, StatusCode};
let mut req = Request::new(Method::Get, Url::parse("https://example.com")?);
req.url_mut().set_scheme("http");
assert_eq!(req.url().scheme(), "http");

pub fn set_body(&mut self, body: impl Into<Body>)[src]

Set the request body.

Examples

use http_types::{Url, Method, Request};

let mut req = Request::new(Method::Get, Url::parse("https://example.com").unwrap());
req.set_body("Hello, Nori!");

pub fn replace_body(&mut self, body: impl Into<Body>) -> Body[src]

Swaps the value of the body with another body, without deinitializing either one.

Examples

use http_types::{Body, Url, Method, Request};

let mut req = Request::new(Method::Get, Url::parse("https://example.com").unwrap());
req.set_body("Hello, Nori!");
let mut body: Body = req.replace_body("Hello, Chashu!");

let mut string = String::new();
body.read_to_string(&mut string).await?;
assert_eq!(&string, "Hello, Nori!");

pub fn swap_body(&mut self, body: &mut Body)[src]

Replace the request body with a new body, and return the old body.

Examples

use http_types::{Body, Url, Method, Request};

let mut req = Request::new(Method::Get, Url::parse("https://example.com").unwrap());
req.set_body("Hello, Nori!");
let mut body = "Hello, Chashu!".into();
req.swap_body(&mut body);

let mut string = String::new();
body.read_to_string(&mut string).await?;
assert_eq!(&string, "Hello, Nori!");

pub fn take_body(&mut self) -> Body[src]

Take the request body, replacing it with an empty body.

Examples

use http_types::{Body, Url, Method, Request};

let mut req = Request::new(Method::Get, Url::parse("https://example.com").unwrap());
req.set_body("Hello, Nori!");
let mut body: Body = req.take_body();

let mut string = String::new();
body.read_to_string(&mut string).await?;
assert_eq!(&string, "Hello, Nori!");

pub fn header(&self, name: &HeaderName) -> Option<&Vec<HeaderValue>>[src]

Get an HTTP header.

pub fn header_mut(&mut self, name: &HeaderName) -> Option<&mut Vec<HeaderValue>>[src]

Get a mutable reference to a header.

pub fn remove_header(&mut self, name: &HeaderName) -> Option<Vec<HeaderValue>>[src]

Remove a header.

pub fn insert_header(
    &mut self,
    name: impl TryInto<HeaderName>,
    values: impl ToHeaderValues
) -> Result<Option<Vec<HeaderValue>>>
[src]

Set an HTTP header.

Examples

use http_types::{Url, Method, Request};

let mut req = Request::new(Method::Get, Url::parse("https://example.com")?);
req.insert_header("Content-Type", "text/plain")?;

pub fn append_header(
    &mut self,
    name: impl TryInto<HeaderName>,
    values: impl ToHeaderValues
) -> Result<()>
[src]

Append a header to the headers.

Unlike insert this function will not override the contents of a header, but insert a header if there aren't any. Or else append to the existing list of headers.

Examples

use http_types::{Url, Method, Request};

let mut req = Request::new(Method::Get, Url::parse("https://example.com")?);
req.append_header("Content-Type", "text/plain")?;

pub fn set_content_type(&mut self, mime: Mime) -> Option<Vec<HeaderValue>>[src]

Set the response MIME.

pub fn content_type(&self) -> Option<Mime>[src]

Get the current content type

pub fn len(&self) -> Option<usize>[src]

Get the length of the body stream, if it has been set.

This value is set when passing a fixed-size object into as the body. E.g. a string, or a buffer. Consumers of this API should check this value to decide whether to use Chunked encoding, or set the response length.

pub fn version(&self) -> Option<Version>[src]

Get the HTTP version, if one has been set.

Examples

use http_types::{Url, Method, Request, Version};

let mut req = Request::new(Method::Get, Url::parse("https://example.com")?);
assert_eq!(req.version(), None);

req.set_version(Some(Version::Http2_0));
assert_eq!(req.version(), Some(Version::Http2_0));

pub fn set_version(&mut self, version: Option<Version>)[src]

Set the HTTP version.

Examples

use http_types::{Url, Method, Request, Version};

let mut req = Request::new(Method::Get, Url::parse("https://example.com")?);
req.set_version(Some(Version::Http2_0));

pub fn cookies(&self) -> Result<Vec<Cookie>, Error>[src]

Get all cookies.

Examples

use http_types::{Cookie, Url, Method, Request, Version};

let mut req = Request::new(Method::Get, Url::parse("https://example.com")?);
req.set_cookie(Cookie::new("name", "value"));
assert_eq!(req.cookies().unwrap(), vec![Cookie::new("name", "value")]);

pub fn cookie(&self, name: &str) -> Result<Option<Cookie>, Error>[src]

Get a cookie by name.

Examples

use http_types::{Cookie, Url, Method, Request, Version};

let mut req = Request::new(Method::Get, Url::parse("https://example.com")?);
req.set_cookie(Cookie::new("name", "value"));
assert_eq!(req.cookie("name").unwrap(), Some(Cookie::new("name", "value")));

Set a cookie.

This will not override any existing cookies, and uses the Cookies header.

Examples

use http_types::{Cookie, Url, Method, Request, Version};

let mut req = Request::new(Method::Get, Url::parse("https://example.com")?);
req.set_cookie(Cookie::new("name", "value"));

pub fn send_trailers(&mut self) -> TrailersSender[src]

Sends trailers to the a receiver.

pub async fn recv_trailers<'_>(&'_ self) -> Option<Result<Trailers>>[src]

Receive trailers from a sender.

Important traits for Iter<'a>
pub fn iter<'a>(&'a self) -> Iter<'a>[src]

An iterator visiting all header pairs in arbitrary order.

Important traits for IterMut<'a>
pub fn iter_mut<'a>(&'a mut self) -> IterMut<'a>[src]

An iterator visiting all header pairs in arbitrary order, with mutable references to the values.

Important traits for Names<'a>
pub fn header_names<'a>(&'a self) -> Names<'a>[src]

An iterator visiting all header names in arbitrary order.

Important traits for Values<'a>
pub fn header_values<'a>(&'a self) -> Values<'a>[src]

An iterator visiting all header values in arbitrary order.

pub fn local(&self) -> &TypeMap[src]

Returns a reference to the existing local state.

pub fn local_mut(&mut self) -> &mut TypeMap[src]

Returns a mutuable reference to the existing local state.

Examples

use http_types::{Url, Method, Request, Version};

let mut req = Request::new(Method::Get, Url::parse("https://example.com")?);
req.local_mut().insert("hello from the extension");
assert_eq!(req.local().get(), Some(&"hello from the extension"));

Trait Implementations

impl AsMut<Headers> for Request[src]

impl AsRef<Headers> for Request[src]

impl AsyncBufRead for Request[src]

impl AsyncRead for Request[src]

impl Debug for Request[src]

impl Into<Body> for Request[src]

impl IntoIterator for Request[src]

type Item = (HeaderName, Vec<HeaderValue>)

The type of the elements being iterated over.

type IntoIter = IntoIter

Which kind of iterator are we turning this into?

fn into_iter(self) -> Self::IntoIter[src]

Returns a iterator of references over the remaining items.

impl<'a> IntoIterator for &'a Request[src]

type Item = (&'a HeaderName, &'a Vec<HeaderValue>)

The type of the elements being iterated over.

type IntoIter = Iter<'a>

Which kind of iterator are we turning this into?

impl<'a> IntoIterator for &'a mut Request[src]

type Item = (&'a HeaderName, &'a mut Vec<HeaderValue>)

The type of the elements being iterated over.

type IntoIter = IterMut<'a>

Which kind of iterator are we turning this into?

impl<'__pin> Unpin for Request where
    __Origin<'__pin>: Unpin

Auto Trait Implementations

impl !RefUnwindSafe for Request

impl Send for Request

impl Sync for Request

impl !UnwindSafe for Request

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> BufReadExt for T where
    T: AsyncBufRead + ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<T> ReadExt for T where
    T: AsyncRead + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.