pub struct Compression<S, P = DefaultPredicate> { /* private fields */ }
Available on crate features 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.

Gets a reference to the underlying service.

Gets a mutable reference to the underlying service.

Consumes self, returning the underlying service.

Returns a new Layer that wraps services with a Compression middleware.

Available on crate feature compression-gzip only.

Sets whether to enable the gzip encoding.

Available on crate feature compression-deflate only.

Sets whether to enable the Deflate encoding.

Available on crate feature 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§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Responses given by the service.
Errors produced by the service.
The future response value.
Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
Process the request and return the response asynchronously. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

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

Calls U::from(self).

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

Available on crate feature follow-redirect only.
Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Available on crate feature follow-redirect only.
Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Yields a mutable reference to the service when it is ready to accept a request.
👎Deprecated since 0.4.6: 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.
Process all requests from the given Stream, and produce a Stream of their responses. Read more
Executes a new future after this service’s future resolves. This does not alter the behaviour of the poll_ready method. Read more
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
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
Convert the service into a Service + Send trait object. Read more
Convert the service into a Service + Clone + Send trait object. Read more
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
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