Skip to main content

RequestBody

Struct RequestBody 

Source
pub struct RequestBody(/* private fields */);
Expand description

A request body on the schema-routing pipeline.

A request entering through hyper keeps its Incoming body inside the Hyper state, without boxing. The routing service replaces it with the Buffered state after collecting for a body-first protocol. Other compatible HTTP bodies enter through RequestBody::new, which erases them into a boxed state.

RequestBody::prefixed replays bytes already read ahead of the remaining body. This allows middleware to inspect a prefix, then forward the full request without collecting the rest.

The states are private so buffering and transport-specific optimizations can evolve.

RequestBody is Send and Sync, so it can be handed to SdkBody::from_body_1_x when an operation input has a streaming member; SdkBody only accepts Sync bodies.

Implementations§

Source§

impl RequestBody

Source

pub fn new<T>(body: T) -> Self
where T: Body<Data = Bytes> + Send + Sync + 'static, T::Error: Into<BoxError>,

Wraps any compatible HTTP body without polling it.

A hyper incoming body and an already-wrapped RequestBody stay unerased; any other body type is erased into a boxed state.

Source

pub fn prefixed(prefix: Bytes, trailers: Option<HeaderMap>, tail: Self) -> Self

Replays bytes already read from a request ahead of its remaining body.

Include all consumed data in prefix so downstream readers receive the full request. Construction does not poll or erase tail. An empty prefix with no captured trailers returns tail unchanged.

Pass None for trailers when only data has been read: unread trailers arrive from tail normally. If trailer frames were already read, pass them here to replay them after tail reaches end-of-stream.

Source

pub fn empty() -> Self

Creates an empty request body.

Source

pub fn from_bytes(bytes: Bytes) -> Self

Creates a request body containing buffered bytes.

Trait Implementations§

Source§

impl Body for RequestBody

Source§

type Data = Bytes

Values yielded by the Body.
Source§

type Error = Error

The error type this Body might generate.
Source§

fn poll_frame( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Option<Result<Frame<Bytes>, Error>>>

Attempt to pull out the next frame of this stream. Read more
Source§

fn is_end_stream(&self) -> bool

A hint that may return true when the end of stream has been reached. Read more
Source§

fn size_hint(&self) -> SizeHint

A hint that returns the bounds on the remaining length of the stream. Read more
Source§

impl Debug for RequestBody

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for RequestBody

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl From<&'static [u8]> for RequestBody

Source§

fn from(bytes: &'static [u8]) -> Self

Converts to this type from the input type.
Source§

impl From<&'static str> for RequestBody

Source§

fn from(string: &'static str) -> Self

Converts to this type from the input type.
Source§

impl From<Bytes> for RequestBody

Source§

fn from(bytes: Bytes) -> Self

Converts to this type from the input type.
Source§

impl From<String> for RequestBody

Source§

fn from(string: String) -> Self

Converts to this type from the input type.
Source§

impl From<Vec<u8>> for RequestBody

Source§

fn from(bytes: Vec<u8>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> BodyExt for T
where T: Body + ?Sized,

§

fn frame(&mut self) -> Frame<'_, Self>
where Self: Unpin,

Returns a future that resolves to the next Frame, if any.
§

fn map_frame<F, B>(self, f: F) -> MapFrame<Self, F>
where Self: Sized, F: FnMut(Frame<Self::Data>) -> Frame<B>, B: Buf,

Maps this body’s frame to a different kind.
§

fn inspect_frame<F>(self, f: F) -> InspectFrame<Self, F>
where Self: Sized, F: FnMut(&Frame<Self::Data>),

A body that calls a function with a reference to each frame before yielding it.
§

fn map_err<F, E>(self, f: F) -> MapErr<Self, F>
where Self: Sized, F: FnMut(Self::Error) -> E,

Maps this body’s error value to a different value.
§

fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
where Self: Sized, F: FnMut(&Self::Error),

A body that calls a function with a reference to an error before yielding it.
§

fn boxed(self) -> BoxBody<Self::Data, Self::Error>
where Self: Sized + Send + Sync + 'static,

Turn this body into a boxed trait object.
§

fn boxed_unsync(self) -> UnsyncBoxBody<Self::Data, Self::Error>
where Self: Sized + Send + 'static,

Turn this body into a boxed trait object that is !Sync.
§

fn collect(self) -> Collect<Self>
where Self: Sized,

Turn this body into [Collected] body which will collect all the DATA frames and trailers.
§

fn with_trailers<F>(self, trailers: F) -> WithTrailers<Self, F>
where Self: Sized, F: Future<Output = Option<Result<HeaderMap, Self::Error>>>,

Add trailers to the body. Read more
§

fn into_stream(self) -> BodyStream<Self>
where Self: Sized,

Turn this body into [BodyStream].
§

fn into_data_stream(self) -> BodyDataStream<Self>
where Self: Sized,

Turn this body into [BodyDataStream].
§

fn fuse(self) -> Fuse<Self>
where Self: Sized,

Creates a “fused” body. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,