diff --git a/actix-web/CHANGES.md b/actix-web/CHANGES.md index 307bba9ba..f9385025a 100644 --- a/actix-web/CHANGES.md +++ b/actix-web/CHANGES.md @@ -1,7 +1,7 @@ # Changelog ## Unreleased - 2021-xx-xx - +- Add `ServiceRequest::{parts, request}()` to make it easier to use middlewares that only have access to a `&ServiceRequest`. ## 4.1.0 - 2022-06-11 ### Added diff --git a/actix-web/src/service.rs b/actix-web/src/service.rs index a9e809bf9..0ad92d8a1 100644 --- a/actix-web/src/service.rs +++ b/actix-web/src/service.rs @@ -95,6 +95,18 @@ impl ServiceRequest { (&mut self.req, &mut self.payload) } + /// Returns immutable accessors to inner parts. + #[inline] + pub fn parts(&self) -> (&HttpRequest, &Payload) { + (&self.req, &self.payload) + } + + /// Returns immutable accessor to inner [`HttpRequest`]. + #[inline] + pub fn request(&self) -> &HttpRequest { + &self.req + } + /// Derives a type from this request using an [extractor](crate::FromRequest). /// /// Returns the `T` extractor's `Future` type which can be `await`ed. This is particularly handy