This commit add more generic types for Service on server side. The body and error can be converted through layers, e.g., you can use the middleware::from_fn for convert Service<Cx, Request<Incoming>> to Service<Cx, Request<Bytes>>.
Example is also updated.
Motivation
In previous implementation, the Router and MethodRouter only supports fixed Body (http::Request with volo_http::body::Body), which is inconvenient.
Solution
This PR makes layer able to convert types of body and error. An example is updated:
The outer Router uses Request with Body and Error = Infallible, while the inner service uses Request with Bytes and Error = (), and please notice that the middleware converted the types for supporting the operation.
Because all the above types have default generic types (body is hyper::body::Incoming and error is Infallible), in this PR, no break changes introduced. But if you want to use this feature, the FromRequest, Next (used for middleware::from_fn) should be updated with a new generic type B as type of the body.
This commit add more generic types for Service on server side. The body and error can be converted through layers, e.g., you can use the
middleware::from_fn
for convertService<Cx, Request<Incoming>>
toService<Cx, Request<Bytes>>
.Example is also updated.
Motivation
In previous implementation, the
Router
andMethodRouter
only supports fixedBody
(http::Request
withvolo_http::body::Body
), which is inconvenient.Solution
This PR makes
layer
able to convert types of body and error. An example is updated:The outer
Router
usesRequest
withBody
andError = Infallible
, while the inner service usesRequest
withBytes
andError = ()
, and please notice that the middleware converted the types for supporting the operation.Because all the above types have default generic types (body is
hyper::body::Incoming
and error isInfallible
), in this PR, no break changes introduced. But if you want to use this feature, theFromRequest
,Next
(used formiddleware::from_fn
) should be updated with a new generic typeB
as type of the body.