From bf19a0e761f0ab1274bff1be956c1eaa82f057a7 Mon Sep 17 00:00:00 2001 From: yinho999 Date: Thu, 9 Feb 2023 12:37:01 -0800 Subject: [PATCH] added body manipulation example for error handlers (#2973) Closes https://github.com/actix/actix-web/issues/2856 --- actix-web/src/middleware/err_handlers.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/actix-web/src/middleware/err_handlers.rs b/actix-web/src/middleware/err_handlers.rs index 4ddbc6318..00fb5cf59 100644 --- a/actix-web/src/middleware/err_handlers.rs +++ b/actix-web/src/middleware/err_handlers.rs @@ -50,6 +50,8 @@ type DefaultHandler = Option>>; /// will pass by unchanged by this middleware. /// /// # Examples +/// ## Handler Response +/// Header /// ``` /// use actix_web::http::{header, StatusCode}; /// use actix_web::middleware::{ErrorHandlerResponse, ErrorHandlers}; @@ -67,6 +69,28 @@ type DefaultHandler = Option>>; /// .wrap(ErrorHandlers::new().handler(StatusCode::INTERNAL_SERVER_ERROR, add_error_header)) /// .service(web::resource("/").route(web::get().to(HttpResponse::InternalServerError))); /// ``` +/// +/// Body Content +/// ``` +/// use actix_web::http::{header, StatusCode}; +/// use actix_web::middleware::{ErrorHandlerResponse, ErrorHandlers}; +/// use actix_web::{dev, web, App, HttpResponse, Result}; +/// fn add_error_body(res: dev::ServiceResponse) -> Result> { +/// // Get the error message and status code +/// let error_message = "An error occurred"; +/// // Destructures ServiceResponse into request and response components +/// let (req, res) = res.into_parts(); +/// // Create a new response with the modified body +/// let res = res.set_body(error_message).map_into_boxed_body(); +/// // Create a new ServiceResponse with the modified response +/// let res = dev::ServiceResponse::new(req, res).map_into_right_body(); +/// Ok(ErrorHandlerResponse::Response(res)) +///} +/// +/// let app = App::new() +/// .wrap(ErrorHandlers::new().handler(StatusCode::INTERNAL_SERVER_ERROR, add_error_body)) +/// .service(web::resource("/").route(web::get().to(HttpResponse::InternalServerError))); +/// ``` /// ## Registering default handler /// ``` /// # use actix_web::http::{header, StatusCode};