Struct pavex::request::body::BufferedBody
source · #[non_exhaustive]pub struct BufferedBody {
pub bytes: Bytes,
}
Expand description
Buffer the entire body of an incoming request in memory.
§Guide
BufferedBody
is the ideal building block for other extractors that need to
have the entire body available in memory to do their job (e.g. JsonBody
).
It can also be useful if you need to access the raw bytes of the body ahead of deserialization
(e.g. to compute its hash as a step of a signature verification process).
Check out the “Low-level access”
section of Pavex’s guide for a thorough introduction to BufferedBody
.
§Security
BufferedBody
includes a size limit to prevent denial-of-service attacks.
Check out the guide
for examples on how to configure it.
§Example
use pavex::http::StatusCode;
use pavex::request::body::BufferedBody;
// The `BufferedBody` extractor consumes the raw request body stream
// and buffers its entire contents in memory.
pub fn handler(body: &BufferedBody) -> StatusCode {
format!(
"The incoming request contains {} bytes",
body.bytes.len(),
);
// [...]
}
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.bytes: Bytes
The buffer of bytes that represents the body of the incoming request.
Implementations§
source§impl BufferedBody
impl BufferedBody
sourcepub async fn extract(
request_head: &RequestHead,
body: RawIncomingBody,
body_size_limit: BodySizeLimit,
) -> Result<Self, ExtractBufferedBodyError>
pub async fn extract( request_head: &RequestHead, body: RawIncomingBody, body_size_limit: BodySizeLimit, ) -> Result<Self, ExtractBufferedBodyError>
Default constructor for BufferedBody
.
If extraction fails, an ExtractBufferedBodyError
is returned.
sourcepub fn register(bp: &mut Blueprint) -> RegisteredConstructor<'_>
pub fn register(bp: &mut Blueprint) -> RegisteredConstructor<'_>
Register the default constructor
for BufferedBody
with a Blueprint
.
sourcepub fn default_constructor() -> Constructor
pub fn default_constructor() -> Constructor
The default constructor
and error handler
for BufferedBody
.
Trait Implementations§
source§impl Clone for BufferedBody
impl Clone for BufferedBody
source§fn clone(&self) -> BufferedBody
fn clone(&self) -> BufferedBody
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for BufferedBody
impl Debug for BufferedBody
source§impl From<BufferedBody> for Bytes
impl From<BufferedBody> for Bytes
source§fn from(buffered_body: BufferedBody) -> Self
fn from(buffered_body: BufferedBody) -> Self
Auto Trait Implementations§
impl !Freeze for BufferedBody
impl RefUnwindSafe for BufferedBody
impl Send for BufferedBody
impl Sync for BufferedBody
impl Unpin for BufferedBody
impl UnwindSafe for BufferedBody
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)