[−][src]Struct hyper::Request 
Represents an HTTP request.
An HTTP request consists of a head and a potentially optional body. The body
component is generic, enabling arbitrary types to represent the HTTP body.
For example, the body could be Vec<u8>, a Stream of byte chunks, or a
value that has been deserialized.
Examples
Creating a Request to send
use http::{Request, Response}; let mut request = Request::builder(); request.uri("https://www.rust-lang.org/") .header("User-Agent", "my-awesome-agent/1.0"); if needs_awesome_header() { request.header("Awesome", "yes"); } let response = send(request.body(()).unwrap()); fn send(req: Request<()>) -> Response<()> { // ... }
Inspecting a request to see what was sent.
use http::{Request, Response, StatusCode}; fn respond_to(req: Request<()>) -> http::Result<Response<()>> { if req.uri() != "/awesome-url" { return Response::builder() .status(StatusCode::NOT_FOUND) .body(()) } let has_awesome_header = req.headers().contains_key("Awesome"); let body = req.body(); // ... }
Deserialize a request of bytes via json:
use http::Request; use serde::de; fn deserialize<T>(req: Request<Vec<u8>>) -> serde_json::Result<Request<T>> where for<'de> T: de::Deserialize<'de>, { let (parts, body) = req.into_parts(); let body = serde_json::from_slice(&body)?; Ok(Request::from_parts(parts, body)) }
Or alternatively, serialize the body of a request to json
use http::Request; use serde::ser; fn serialize<T>(req: Request<T>) -> serde_json::Result<Request<Vec<u8>>> where T: ser::Serialize, { let (parts, body) = req.into_parts(); let body = serde_json::to_vec(&body)?; Ok(Request::from_parts(parts, body)) }
Methods
impl Request<()>[src] 
impl Request<()>pub fn builder() -> Builder[src] 
pub fn builder() -> BuilderCreates a new builder-style object to manufacture a Request
This method returns an instance of Builder which can be used to
create a Request.
Examples
let request = Request::builder() .method("GET") .uri("https://www.rust-lang.org/") .header("X-Custom-Foo", "Bar") .body(()) .unwrap();
pub fn get<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, [src] 
pub fn get<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, Creates a new Builder initialized with a GET method and the given URI.
This method returns an instance of Builder which can be used to
create a Request.
Example
let request = Request::get("https://www.rust-lang.org/") .body(()) .unwrap();
pub fn put<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, [src] 
pub fn put<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, Creates a new Builder initialized with a PUT method and the given URI.
This method returns an instance of Builder which can be used to
create a Request.
Example
let request = Request::put("https://www.rust-lang.org/") .body(()) .unwrap();
pub fn post<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, [src] 
pub fn post<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, Creates a new Builder initialized with a POST method and the given URI.
This method returns an instance of Builder which can be used to
create a Request.
Example
let request = Request::post("https://www.rust-lang.org/") .body(()) .unwrap();
pub fn delete<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, [src] 
pub fn delete<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, Creates a new Builder initialized with a DELETE method and the given URI.
This method returns an instance of Builder which can be used to
create a Request.
Example
let request = Request::delete("https://www.rust-lang.org/") .body(()) .unwrap();
pub fn options<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, [src] 
pub fn options<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, Creates a new Builder initialized with an OPTIONS method and the given URI.
This method returns an instance of Builder which can be used to
create a Request.
Example
let request = Request::options("https://www.rust-lang.org/") .body(()) .unwrap();
pub fn head<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, [src] 
pub fn head<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, Creates a new Builder initialized with a HEAD method and the given URI.
This method returns an instance of Builder which can be used to
create a Request.
Example
let request = Request::head("https://www.rust-lang.org/") .body(()) .unwrap();
pub fn connect<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, [src] 
pub fn connect<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, Creates a new Builder initialized with a CONNECT method and the given URI.
This method returns an instance of Builder which can be used to
create a Request.
Example
let request = Request::connect("https://www.rust-lang.org/") .body(()) .unwrap();
pub fn patch<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, [src] 
pub fn patch<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, Creates a new Builder initialized with a PATCH method and the given URI.
This method returns an instance of Builder which can be used to
create a Request.
Example
let request = Request::patch("https://www.rust-lang.org/") .body(()) .unwrap();
pub fn trace<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, [src] 
pub fn trace<T>(uri: T) -> Builder where
    Uri: HttpTryFrom<T>, Creates a new Builder initialized with a TRACE method and the given URI.
This method returns an instance of Builder which can be used to
create a Request.
Example
let request = Request::trace("https://www.rust-lang.org/") .body(()) .unwrap();
impl<T> Request<T>[src] 
impl<T> Request<T>pub fn new(body: T) -> Request<T>[src] 
pub fn new(body: T) -> Request<T>Creates a new blank Request with the body
The component parts of this request will be set to their default, e.g. the GET method, no headers, etc.
Examples
let request = Request::new("hello world"); assert_eq!(*request.method(), Method::GET); assert_eq!(*request.body(), "hello world");
pub fn from_parts(parts: Parts, body: T) -> Request<T>[src] 
pub fn from_parts(parts: Parts, body: T) -> Request<T>Creates a new Request with the given components parts and body.
Examples
let request = Request::new("hello world"); let (mut parts, body) = request.into_parts(); parts.method = Method::POST; let request = Request::from_parts(parts, body);
pub fn method(&self) -> &Method[src] 
pub fn method(&self) -> &MethodReturns a reference to the associated HTTP method.
Examples
let request: Request<()> = Request::default(); assert_eq!(*request.method(), Method::GET);
pub fn method_mut(&mut self) -> &mut Method[src] 
pub fn method_mut(&mut self) -> &mut MethodReturns a mutable reference to the associated HTTP method.
Examples
let mut request: Request<()> = Request::default(); *request.method_mut() = Method::PUT; assert_eq!(*request.method(), Method::PUT);
pub fn uri(&self) -> &Uri[src] 
pub fn uri(&self) -> &UriReturns a reference to the associated URI.
Examples
let request: Request<()> = Request::default(); assert_eq!(*request.uri(), *"/");
pub fn uri_mut(&mut self) -> &mut Uri[src] 
pub fn uri_mut(&mut self) -> &mut UriReturns a mutable reference to the associated URI.
Examples
let mut request: Request<()> = Request::default(); *request.uri_mut() = "/hello".parse().unwrap(); assert_eq!(*request.uri(), *"/hello");
pub fn version(&self) -> Version[src] 
pub fn version(&self) -> VersionReturns the associated version.
Examples
let request: Request<()> = Request::default(); assert_eq!(request.version(), Version::HTTP_11);
pub fn version_mut(&mut self) -> &mut Version[src] 
pub fn version_mut(&mut self) -> &mut VersionReturns a mutable reference to the associated version.
Examples
let mut request: Request<()> = Request::default(); *request.version_mut() = Version::HTTP_2; assert_eq!(request.version(), Version::HTTP_2);
pub fn headers(&self) -> &HeaderMap<HeaderValue>[src] 
pub fn headers(&self) -> &HeaderMap<HeaderValue>Returns a reference to the associated header field map.
Examples
let request: Request<()> = Request::default(); assert!(request.headers().is_empty());
pub fn headers_mut(&mut self) -> &mut HeaderMap<HeaderValue>[src] 
pub fn headers_mut(&mut self) -> &mut HeaderMap<HeaderValue>Returns a mutable reference to the associated header field map.
Examples
let mut request: Request<()> = Request::default(); request.headers_mut().insert(HOST, HeaderValue::from_static("world")); assert!(!request.headers().is_empty());
pub fn extensions(&self) -> &Extensions[src] 
pub fn extensions(&self) -> &ExtensionsReturns a reference to the associated extensions.
Examples
let request: Request<()> = Request::default(); assert!(request.extensions().get::<i32>().is_none());
pub fn extensions_mut(&mut self) -> &mut Extensions[src] 
pub fn extensions_mut(&mut self) -> &mut ExtensionsReturns a mutable reference to the associated extensions.
Examples
let mut request: Request<()> = Request::default(); request.extensions_mut().insert("hello"); assert_eq!(request.extensions().get(), Some(&"hello"));
pub fn body(&self) -> &T[src] 
pub fn body(&self) -> &TReturns a reference to the associated HTTP body.
Examples
let request: Request<String> = Request::default(); assert!(request.body().is_empty());
pub fn body_mut(&mut self) -> &mut T[src] 
pub fn body_mut(&mut self) -> &mut TReturns a mutable reference to the associated HTTP body.
Examples
let mut request: Request<String> = Request::default(); request.body_mut().push_str("hello world"); assert!(!request.body().is_empty());
pub fn into_body(self) -> T[src] 
pub fn into_body(self) -> TConsumes the request, returning just the body.
Examples
let request = Request::new(10); let body = request.into_body(); assert_eq!(body, 10);
pub fn into_parts(self) -> (Parts, T)[src] 
pub fn into_parts(self) -> (Parts, T)Consumes the request returning the head and body parts.
Examples
let request = Request::new(()); let (parts, body) = request.into_parts(); assert_eq!(parts.method, Method::GET);
pub fn map<F, U>(self, f: F) -> Request<U> where
    F: FnOnce(T) -> U, [src] 
pub fn map<F, U>(self, f: F) -> Request<U> where
    F: FnOnce(T) -> U, Consumes the request returning a new request with body mapped to the return type of the passed in function.
Examples
let request = Request::builder().body("some string").unwrap(); let mapped_request: Request<&[u8]> = request.map(|b| { assert_eq!(b, "some string"); b.as_bytes() }); assert_eq!(mapped_request.body(), &"some string".as_bytes());
Trait Implementations
impl<T> Default for Request<T> where
    T: Default, [src] 
impl<T> Default for Request<T> where
    T: Default, impl<T> Debug for Request<T> where
    T: Debug, [src] 
impl<T> Debug for Request<T> where
    T: Debug, Auto Trait Implementations
Blanket Implementations
impl<T> From for T[src] 
impl<T> From for Timpl<T, U> Into for T where
    U: From<T>, [src] 
impl<T, U> Into for T where
    U: From<T>, impl<T, U> TryFrom for T where
    T: From<U>, [src] 
impl<T, U> TryFrom for T where
    T: From<U>, type Error = !
try_from)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src] 
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>try_from)Performs the conversion.
impl<T> Borrow for T where
    T: ?Sized, [src] 
impl<T> Borrow for T where
    T: ?Sized, impl<T> BorrowMut for T where
    T: ?Sized, [src] 
impl<T> BorrowMut for T where
    T: ?Sized, fn borrow_mut(&mut self) -> &mut T[src] 
fn borrow_mut(&mut self) -> &mut TMutably borrows from an owned value. Read more
impl<T, U> TryInto for T where
    U: TryFrom<T>, [src] 
impl<T, U> TryInto for T where
    U: TryFrom<T>, type Error = <U as TryFrom<T>>::Error
try_from)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src] 
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>try_from)Performs the conversion.
impl<T> Any for T where
    T: 'static + ?Sized, [src] 
impl<T> Any for T where
    T: 'static + ?Sized, fn get_type_id(&self) -> TypeId[src] 
fn get_type_id(&self) -> TypeId🔬 This is a nightly-only experimental API.  (get_type_id)
this method will likely be replaced by an associated static
Gets the TypeId of self. Read more
impl<T> Erased for T[src] 
impl<T> Erased for T