Struct tower_http::compression::Compression
source · [−]pub struct Compression<S, P = DefaultPredicate> { /* private fields */ }compression-br or compression-deflate or compression-gzip only.Expand description
Compress response bodies of the underlying service.
This uses the Accept-Encoding header to pick an appropriate encoding and adds the
Content-Encoding header to responses.
See the module docs for more details.
Implementations
Creates a new Compression wrapping the service.
Consumes self, returning the underlying service.
Returns a new Layer that wraps services with a Compression middleware.
This is supported on crate feature compression-gzip only.
compression-gzip only.Sets whether to enable the gzip encoding.
This is supported on crate feature compression-deflate only.
compression-deflate only.Sets whether to enable the Deflate encoding.
This is supported on crate feature compression-br only.
compression-br only.Sets whether to enable the Brotli encoding.
Disables the gzip encoding.
This method is available even if the gzip crate feature is disabled.
Disables the Deflate encoding.
This method is available even if the deflate crate feature is disabled.
Disables the Brotli encoding.
This method is available even if the br crate feature is disabled.
Replace the current compression predicate.
Predicates are used to determine whether a response should be compressed or not.
The default predicate is DefaultPredicate. See its documentation for more
details on which responses it wont compress.
Changing the compression predicate
use tower_http::compression::{
Compression,
predicate::{Predicate, NotForContentType, DefaultPredicate},
};
use tower::util::service_fn;
// Placeholder service_fn
let service = service_fn(|_: ()| async {
Ok::<_, std::io::Error>(http::Response::new(()))
});
// build our custom compression predicate
// its recommended to still include `DefaultPredicate` as part of
// custom predicates
let predicate = DefaultPredicate::new()
// don't compress responses who's `content-type` starts with `application/json`
.and(NotForContentType::new("application/json"));
let service = Compression::new(service).compress_when(predicate);See predicate for more utilities for building compression predicates.
Responses that are already compressed (ie have a content-encoding header) will never be
recompressed, regardless what they predicate says.
Trait Implementations
type Response = Response<CompressionBody<ResBody>>
type Response = Response<CompressionBody<ResBody>>
Responses given by the service.
type Future = ResponseFuture<S::Future, P>
type Future = ResponseFuture<S::Future, P>
The future response value.
Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
Auto Trait Implementations
impl<S, P> RefUnwindSafe for Compression<S, P> where
P: RefUnwindSafe,
S: RefUnwindSafe,
impl<S, P> Send for Compression<S, P> where
P: Send,
S: Send,
impl<S, P> Sync for Compression<S, P> where
P: Sync,
S: Sync,
impl<S, P> Unpin for Compression<S, P> where
P: Unpin,
S: Unpin,
impl<S, P> UnwindSafe for Compression<S, P> where
P: UnwindSafe,
S: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
follow-redirect only.Create a new Policy that returns Action::Follow only if self and other return
Action::Follow. Read more
Yields a mutable reference to the service when it is ready to accept a request.
please use the ServiceExt::ready method instead
Yields a mutable reference to the service when it is ready to accept a request.
Yields the service when it is ready to accept a request.
Consume this Service, calling with the providing request once it is ready.
Executes a new future after this service’s future resolves. This does
not alter the behaviour of the poll_ready method. Read more
fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F> where
F: FnOnce(Self::Response) -> Response + Clone,
fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F> where
F: FnOnce(Self::Response) -> Response + Clone,
Maps this service’s response value to a different value. This does not
alter the behaviour of the poll_ready method. Read more
Maps this service’s error value to a different value. This does not
alter the behaviour of the poll_ready method. Read more
Maps this service’s result type (Result<Self::Response, Self::Error>)
to a different value, regardless of whether the future succeeds or
fails. Read more
fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F> where
F: FnMut(NewRequest) -> Request,
fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F> where
F: FnMut(NewRequest) -> Request,
Composes a function in front of the service. Read more
Composes an asynchronous function after this service. Read more
Composes a function that transforms futures produced by the service. Read more
Attaches the provided Subscriber to this type, returning a
WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more