Trait actix_web::Responder

source ·
pub trait Responder {
    type Body: MessageBody + 'static;

    // Required method
    fn respond_to(self, req: &HttpRequest) -> HttpResponse<Self::Body>;

    // Provided method
    fn customize(self) -> CustomizeResponder<Self>
       where Self: Sized { ... }
}
Expand description

Trait implemented by types that can be converted to an HTTP response.

Any types that implement this trait can be used in the return type of a handler. Since handlers will only have one return type, it is idiomatic to use opaque return types -> impl Responder.

Implementations

It is often not required to implement Responder for your own types due to a broad base of built-in implementations:

Customizing Responder Output

Calling .customize() on any responder type will wrap it in a CustomizeResponder capable of overriding various parts of the response such as the status code and header map.

Required Associated Types§

source

type Body: MessageBody + 'static

Required Methods§

source

fn respond_to(self, req: &HttpRequest) -> HttpResponse<Self::Body>

Convert self to HttpResponse.

Provided Methods§

source

fn customize(self) -> CustomizeResponder<Self>where Self: Sized,

Wraps responder to allow alteration of its response.

See CustomizeResponder docs for more details on its capabilities.

Examples
use actix_web::{Responder, http::StatusCode, test::TestRequest};

let responder = "Hello world!"
    .customize()
    .with_status(StatusCode::BAD_REQUEST)
    .insert_header(("x-hello", "world"));

let request = TestRequest::default().to_http_request();
let response = responder.respond_to(&request);
assert_eq!(response.status(), StatusCode::BAD_REQUEST);
assert_eq!(response.headers().get("x-hello").unwrap(), "world");

Implementations on Foreign Types§

source§

impl Responder for &String

source§

impl Responder for &'static str

§

type Body = &'static str

source§

fn respond_to(self, _: &HttpRequest) -> HttpResponse<Self::Body>

source§

impl Responder for Cow<'_, str>

source§

impl Responder for &'static [u8]

§

type Body = &'static [u8]

source§

fn respond_to(self, _: &HttpRequest) -> HttpResponse<Self::Body>

source§

impl Responder for Vec<u8>

source§

impl Responder for String

source§

impl Responder for ByteString

source§

impl<R: Responder> Responder for (R, StatusCode)

§

type Body = <R as Responder>::Body

source§

fn respond_to(self, req: &HttpRequest) -> HttpResponse<Self::Body>

source§

impl<R: Responder> Responder for Option<R>

source§

impl<R, E> Responder for Result<R, E>where R: Responder, E: Into<Error>,

source§

impl Responder for ResponseBuilder

Implementors§

source§

impl Responder for Response<BoxBody>

source§

impl Responder for HttpResponseBuilder

source§

impl Responder for Bytes

§

type Body = Bytes

source§

impl Responder for BytesMut

source§

impl Responder for Redirect

§

type Body = ()

source§

impl<B> Responder for HttpResponse<B>where B: MessageBody + 'static,

§

type Body = B

source§

impl<L, R> Responder for Either<L, R>where L: Responder, R: Responder,

See here for example of usage as a handler return type.

§

type Body = EitherBody<<L as Responder>::Body, <R as Responder>::Body>

source§

impl<T> Responder for InternalError<T>where T: Debug + Display + 'static,

source§

impl<T> Responder for CustomizeResponder<T>where T: Responder,

source§

impl<T: Serialize> Responder for Form<T>

See here for example of usage as a handler return type.

source§

impl<T: Serialize> Responder for Json<T>

Creates response with OK status code, correct content type header, and serialized JSON payload.

If serialization failed