pub fn map_response_body<F>(mapper_fn: F) -> MapResBodyMiddleware<F>
Expand description

Creates a middleware from an async function that is used as a mapping function for an impl MessageBody.

Examples

Completely replaces the body:

use actix_web::{body::MessageBody, HttpRequest};

async fn replace_body(
    _req: HttpRequest,
    _: impl MessageBody
) -> actix_web::Result<impl MessageBody> {
    Ok("foo".to_owned())
}

Appends some bytes to the body:

use actix_web::{
    body::{self, MessageBody},
    web::{BufMut as _, BytesMut},
    HttpRequest,
};

async fn append_bytes(
    _req: HttpRequest,
    body: impl MessageBody
) -> actix_web::Result<impl MessageBody> {
    let buf = body::to_bytes(body).await.ok().unwrap();

    let mut body = BytesMut::from(&buf[..]);
    body.put_slice(b" - hope you like things ruining your payload format");

    Ok(body)
}