# Module http::response [−] [src]

HTTP response types.

This module contains structs related to HTTP responses, notably the `Response` type itself as well as a builder to create responses. Typically you’ll import the `http::Response` type rather than reaching into this module itself.

# Examples

Creating a `Response` to return

    use http::{Request, Response, StatusCode};

    fn respond_to(req: Request<()>) -> http::Result<Response<()>> {
        let mut builder = Response::builder()
            .header("Foo", "Bar")
            .status(StatusCode::OK);

        if req.headers().contains_key("Another-Header") {
            builder = builder.header("Another-Header", "Ack");
        }

        builder.body(())
    }

A simple 404 handler

    use http::{Request, Response, StatusCode};

    fn not_found(_req: Request<()>) -> http::Result<Response<()>> {
        Response::builder()
            .status(StatusCode::NOT_FOUND)
            .body(())
    }

Or otherwise inspecting the result of a request:

    use http::{Request, Response};

    fn get(url: &str) -> http::Result<Response<()>> {
        // ...
    }

    let response = get("https://www.rust-lang.org/").unwrap();

    if !response.status().is_success() {
        panic!("failed to get a successful response status!");
    }

    if let Some(date) = response.headers().get("Date") {
        // we've got a `Date` header!
    }

    let body = response.body();
    // ...

## Structs

Builder | An HTTP response builder
Parts | Component parts of an HTTP `Response`
Response | Represents an HTTP response