DRAFT: use http_body::Body #92
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a major rewrite of the http api to provide compatibility with the
http_body::Body
trait. This trait is used throughout the Rust http ecosystem (e.g. hyper, reqwest, axum) to provide an async streaming representation of bodies with trailers.There is a new
wstd::http::Body
struct that is a concrete representation for bodies.The http server entrypoint now looks like:
http::Client now looks like
There is no more
IntoBody
trait. To construct a Body, there are:From<B: http_body::Body> for Body
(simplified - definition for full signature)from_string(s: impl Into<String>) -> Self
from_bytes(b: impl Into<Bytes>) -> Self
from_json(data: impl serde::Serialize) -> Result<Self, serde_json::Error>
from_input_stream(r: wstd::io::AsyncInputStream) -> Self
incoming-body
resource. This variation allows efficient forwarding to anoutgoing-body
where body streaming can skip copying in and out of the guest, viawstd::io::copy
.The ways to consume a Body are: