[]Struct tide::Request

pub struct Request<State> { /* fields omitted */ }

An HTTP request.

The Request gives endpoints access to basic information about the incoming request, route parameters, and various ways of accessing the request's body.

Requests also provide extensions, a type map primarily used for low-level communication between middleware and endpoints.

Methods

impl<State> Request<State>[src]

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

Access the request's HTTP method.

Examples

use tide::Request;

let mut app = tide::new();
app.at("/").get(|req: Request<()>| async move {
    assert_eq!(req.method(), http::Method::GET);
    ""
});
app.listen("127.0.0.1:8080").await?;

pub fn uri(&self) -> &Uri[src]

Access the request's full URI method.

Examples

use tide::Request;

let mut app = tide::new();
app.at("/").get(|req: Request<()>| async move {
    assert_eq!(req.uri(), &"/".parse::<tide::http::Uri>().unwrap());
    ""
});
app.listen("127.0.0.1:8080").await?;

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

Access the request's HTTP version.

Examples

use tide::Request;

let mut app = tide::new();
app.at("/").get(|req: Request<()>| async move {
    assert_eq!(req.version(), tide::http::Version::HTTP_11);
    ""
});
app.listen("127.0.0.1:8080").await?;

pub fn headers(&self) -> &HeaderMap[src]

Access the request's headers.

pub fn header(&self, key: &'static str) -> Option<&str>[src]

Get an HTTP header.

Examples

use tide::Request;

let mut app = tide::new();
app.at("/").get(|req: Request<()>| async move {
    assert_eq!(req.header("X-Forwarded-For"), Some("127.0.0.1"));
    ""
});
app.listen("127.0.0.1:8080").await?;

pub fn local<T: Send + Sync + 'static>(&self) -> Option<&T>[src]

Get a local value.

pub fn set_local<T: Send + Sync + 'static>(self, val: T) -> Self[src]

Set a local value.

pub fn state(&self) -> &State[src]

Access app-global state.

pub fn param<T: FromStr>(&self, key: &str) -> Result<T, T::Err>[src]

Extract and parse a route parameter by name.

Returns the results of parsing the parameter according to the inferred output type T.

The name should not include the leading : or the trailing * (if any).

Errors

Yields an Err if the parameter was found but failed to parse as an instance of type T.

Panics

Panic if key is not a parameter for the route.

pub async fn body_bytes<'_>(&'_ mut self) -> Result<Vec<u8>>[src]

Reads the entire request body into a byte buffer.

This method can be called after the body has already been read, but will produce an empty buffer.

Errors

Any I/O error encountered while reading the body is immediately returned as an Err.

Examples

use tide::Request;

let mut app = tide::new();
app.at("/").get(|mut req: Request<()>| async move {
    let _body: Vec<u8> = req.body_bytes().await.unwrap();
    ""
});
app.listen("127.0.0.1:8080").await?;

pub async fn body_string<'_>(&'_ mut self) -> Result<String>[src]

Reads the entire request body into a string.

This method can be called after the body has already been read, but will produce an empty buffer.

Errors

Any I/O error encountered while reading the body is immediately returned as an Err.

If the body cannot be interpreted as valid UTF-8, an Err is returned.

Examples

use tide::Request;

let mut app = tide::new();
app.at("/").get(|mut req: Request<()>| async move {
    let _body: String = req.body_string().await.unwrap();
    ""
});
app.listen("127.0.0.1:8080").await?;

pub async fn body_json<'_, T: DeserializeOwned>(&'_ mut self) -> Result<T>[src]

Reads and deserialized the entire request body via json.

Errors

Any I/O error encountered while reading the body is immediately returned as an Err.

If the body cannot be interpreted as valid json for the target type T, an Err is returned.

pub fn query<'de, T: Deserialize<'de>>(&'de self) -> Result<T, Error>[src]

Get the URL querystring.

pub async fn body_form<'_, T: DeserializeOwned>(&'_ mut self) -> Result<T>[src]

Parse the request body as a form.

Trait Implementations

impl<State> AsyncRead for Request<State>[src]

impl<State: Debug> Debug for Request<State>[src]

impl<State: Send + Sync + 'static> IntoResponse for Request<State>[src]

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

Auto Trait Implementations

impl<State> !RefUnwindSafe for Request<State>

impl<State> Send for Request<State> where
    State: Send + Sync

impl<State> !Sync for Request<State>

impl<State> !UnwindSafe for Request<State>

Blanket Implementations

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

impl<R> AsyncReadExt for R where
    R: AsyncRead + ?Sized
[src]

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

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

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

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

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.