pub struct Body { /* private fields */ }
Expand description
The body of a Request
.
In most cases, this is not needed directly, as the
RequestBuilder.body
method uses Into<Body>
, which allows
passing many things (like a string or vector of bytes).
Implementations§
Source§impl Body
impl Body
Sourcepub fn new<R: Read + Send + 'static>(reader: R) -> Body
pub fn new<R: Read + Send + 'static>(reader: R) -> Body
Instantiate a Body
from a reader.
§Note
While allowing for many types to be used, these bodies do not have
a way to reset to the beginning and be reused. This means that when
encountering a 307 or 308 status code, instead of repeating the
request at the new location, the Response
will be returned with
the redirect status code set.
let file = File::open("national_secrets.txt")?;
let body = Body::new(file);
If you have a set of bytes, like String
or Vec<u8>
, using the
From
implementations for Body
will store the data in a manner
it can be reused.
let s = "A stringy body";
let body = Body::from(s);
Sourcepub fn sized<R: Read + Send + 'static>(reader: R, len: u64) -> Body
pub fn sized<R: Read + Send + 'static>(reader: R, len: u64) -> Body
Create a Body
from a Read
where the size is known in advance
but the data should not be fully loaded into memory. This will
set the Content-Length
header and stream from the Read
.
let file = File::open("a_large_file.txt")?;
let file_size = file.metadata()?.len();
let body = Body::sized(file, file_size);
Sourcepub fn as_bytes(&self) -> Option<&[u8]>
pub fn as_bytes(&self) -> Option<&[u8]>
Returns the body as a byte slice if the body is already buffered in
memory. For streamed requests this method returns None
.
Sourcepub fn buffer(&mut self) -> Result<&[u8], Error>
pub fn buffer(&mut self) -> Result<&[u8], Error>
Converts streamed requests to their buffered equivalent and returns a reference to the buffer. If the request is already buffered, this has no effect.
Be aware that for large requests this method is expensive and may cause your program to run out of memory.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Body
impl !RefUnwindSafe for Body
impl Send for Body
impl !Sync for Body
impl Unpin for Body
impl !UnwindSafe for Body
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more